ce1d1396e0
Bypass solo en desarrollo; pruebas y producción validan header turnstile vía HTTPS nativo. Co-authored-by: Cursor <cursoragent@cursor.com>
186 lines
5.1 KiB
TypeScript
186 lines
5.1 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Put,
|
|
Query,
|
|
Request,
|
|
UseGuards,
|
|
} from '@nestjs/common';
|
|
import { AuthGuard } from '@nestjs/passport';
|
|
import {
|
|
ApiBearerAuth,
|
|
ApiBody,
|
|
ApiOperation,
|
|
ApiQuery,
|
|
ApiTags,
|
|
} from '@nestjs/swagger';
|
|
import { Serealize } from '../interceptors/serialize.interceptor';
|
|
import { TurnstileGuard } from '../guards/turnstile.guard';
|
|
import { UsuarioService } from './usuario.service';
|
|
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
|
import { Operador } from '../operador/entity/operador.entity';
|
|
import { RegistrarUsuarioInputDto } from './dto/input/registrar.dto';
|
|
import { UpdateUsuarioInputDto } from './dto/input/update.dto';
|
|
import { UsuarioInputDto } from './dto/input/usuario.dto';
|
|
import { UsuariosInputDto } from './dto/input/usuarios.dto';
|
|
import { MessageOutputDto } from '../dto/output/message.dto';
|
|
import { UsuarioOutputDto } from './dto/output/usuario.dto';
|
|
import { UsuariosOutputDto } from './dto/output/usuarios.dto';
|
|
|
|
@Controller('usuario')
|
|
@ApiTags('usuario')
|
|
export class UsuarioController {
|
|
constructor(
|
|
private usuarioService: UsuarioService,
|
|
private validarUsuarioService: ValidarUsuarioService,
|
|
) {}
|
|
|
|
@Serealize(MessageOutputDto)
|
|
@Post('registrar')
|
|
@UseGuards(TurnstileGuard)
|
|
@ApiOperation({ description: 'Registro de usuario.' })
|
|
@ApiBody({
|
|
description: 'Variables que necesita el endpoint.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: {
|
|
id_institucion_carrera: 1,
|
|
telefono: '',
|
|
usuario: '',
|
|
_rfc: '',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
registrar(@Body() body: RegistrarUsuarioInputDto) {
|
|
return this.usuarioService.registrar(
|
|
body.id_institucion_carrera,
|
|
body.usuario,
|
|
body.telefono,
|
|
body.rfc,
|
|
);
|
|
}
|
|
|
|
@Serealize(MessageOutputDto)
|
|
@Put()
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({ description: 'Actualizar información de un usuario.' })
|
|
@ApiBearerAuth('jwt')
|
|
@ApiBody({
|
|
description:
|
|
'Variables que necesita el endpoint. Las variables con "_" al inicio son opcionales.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: {
|
|
id_usuario: 1,
|
|
_correo: '',
|
|
_telefono: '',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
update(@Request() req, @Body() body: UpdateUsuarioInputDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
return this.usuarioService.update(operador, body);
|
|
}
|
|
|
|
@Serealize(MessageOutputDto)
|
|
@Put('update-password')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({ description: 'Reenviar password al usuario.' })
|
|
@ApiBearerAuth('jwt')
|
|
@ApiBody({
|
|
description: 'Variables que necesita el endpoint.',
|
|
examples: { ejemplo: { value: { id_usuario: 1 } } },
|
|
})
|
|
passwordResset(@Request() req, @Body() body: UpdateUsuarioInputDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
return this.usuarioService.passwordReset(operador, body.id_usuario);
|
|
}
|
|
|
|
@Serealize(UsuarioOutputDto)
|
|
@Get('usuario')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({ description: 'Información de un usuario.' })
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'El número de cuenta que se quiere buscar.',
|
|
name: 'usuario',
|
|
type: 'string',
|
|
})
|
|
usuario(@Request() req, @Query() query: UsuarioInputDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
return this.usuarioService.findFullInfoByUsuario(operador, query.usuario);
|
|
}
|
|
|
|
@Serealize(UsuariosOutputDto)
|
|
@Get('usuarios')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description:
|
|
'Información de 25 usuarios dependiendo de los filtros enviados.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'Página en la que se encuentra el operador.',
|
|
name: 'pagina',
|
|
type: 'string',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Todos los usuarios activos.',
|
|
name: 'activo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la carrera que se quiere usar como filtro.',
|
|
name: 'id_carrera',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la institución que se quiere usar como filtro.',
|
|
name: 'id_institucion',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo usuario que se quiere usar como filtro.',
|
|
name: 'id_tipo_usuario',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Nombre del usuario que se quiere buscar.',
|
|
name: 'nombre',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Todos los usuarios registrados.',
|
|
name: 'password',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Usuario que se quiere buscar.',
|
|
name: 'usuario',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
usuarios(@Request() req, @Query() query: UsuariosInputDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarOperador(operador);
|
|
return this.usuarioService.findAll(operador, query);
|
|
}
|
|
}
|