/// <summary> /// Inicia el proceso de autenticación de un supervisor (usuario BackOffice) /// </summary> /// <param name="data">Modelo con los datos necesarios para la autenticación.</param> /// <returns> /// Modelo <see cref="PostBOSigninResponseModel"/> con los datos de la respuesta. /// </returns> /// <exception cref="ArgumentNullException">El parámetro 'data' no puede ser NULL.</exception> public PostBOSigninResponseModel Signin(PostBOSigninRequestModel data) { if (data == null) { throw new ArgumentNullException("El parámetro 'data' no puede ser NULL."); } var signinModel = new PostBOSigninResponseModel { status = ResultStatus.ACCESS_DENIED }; try { Supervisors supervisor = _supervisorRepository.SingleOrDefault(item => item.Email == data.user); if (supervisor == null) { signinModel.status = ResultStatus.NOT_FOUND; return(signinModel); } // validacion de password y estado de aprobacion var inHash = CreateHash(data.password); var dbHash = supervisor.Password; if (inHash != dbHash || supervisor.State == (int)SupervisorState.Pending) { return(signinModel); } signinModel.status = ResultStatus.SUCCESS; signinModel.accessToken = GenerateToken(supervisor.Email, supervisor.State.ToString()); InsertLogSignIn(supervisor, signinModel); } catch (ArgumentNullException e) { return(new PostBOSigninResponseModel { status = ResultStatus.ERROR }); } catch (ArgumentException e) { return(new PostBOSigninResponseModel { status = ResultStatus.ERROR }); } catch (Exception e) { return(new PostBOSigninResponseModel { status = ResultStatus.ERROR }); } return(signinModel); }
public void InsertLogSignIn(Supervisors supervisor, PostBOSigninResponseModel signinModel) { if (supervisor != null) { DateTime dtNow = DateTime.UtcNow; LogsGenerals LogPetition = new LogsGenerals { TypeLog = "Log De Peticion Supervisor", Description = "Inicio De Sesion", HourLog = dtNow, UserId = supervisor.Id, CallsId = null }; _logsRepository.Insert(LogPetition); _logsRepository.Save(); } else if (supervisor == null) { DateTime dtNow = DateTime.UtcNow; LogsGenerals LogPetition = new LogsGenerals { TypeLog = "Log De Respuesta Supervisor", Description = "No se encuentra registrado", HourLog = dtNow, UserId = null, CallsId = null }; _logsRepository.Insert(LogPetition); _logsRepository.Save(); } else if (signinModel.status == ResultStatus.SUCCESS) { DateTime dtNow = DateTime.UtcNow; LogsGenerals LogPetition = new LogsGenerals { TypeLog = "Log De Respuesta", Description = "Inico De Sesion Exitoso", HourLog = dtNow, UserId = supervisor.Id, CallsId = null }; _logsRepository.Insert(LogPetition); _logsRepository.Save(); } }
public IActionResult Signin([FromBody][Required] PostBOSigninRequestDto data) { try { /// <summary> /// Método para guardar request en logs /// </summary> _securityService.RequestLog("api/bo/auth/Signin: " + JsonConvert.SerializeObject(data)); if (string.IsNullOrWhiteSpace(data.user) || string.IsNullOrWhiteSpace(data.password)) { return(BadRequest()); } else { PostBOSigninRequestModel request = _mapper.Map <PostBOSigninRequestModel>(data); PostBOSigninResponseModel dataSigninModel = _boAuthService.Signin(request); switch (dataSigninModel.status) { case ResultStatus.SUCCESS: PostBOSigninResponseDto responseSignin = _mapper.Map <PostBOSigninResponseDto>(dataSigninModel); return(Ok(responseSignin)); case ResultStatus.NOT_FOUND: case ResultStatus.ACCESS_DENIED: return(StatusCode(StatusCodes.Status401Unauthorized)); default: return(StatusCode(StatusCodes.Status500InternalServerError)); } } } catch (ArgumentNullException e) { return(BadRequest()); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e)); } }