コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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));
            }
        }