Пример #1
0
        public async Task <ServiceResponse <ValidateUserResponse> > ValidateUser(ValidateUserRequest validateUserRequest)
        {
            _logger.Information("Call ValidateUserManager : ValidateUser");
            var response = new ServiceResponse <ValidateUserResponse> {
                IsSuccess = true, TokenStatus = TokenStatus.NotRequired
            };

            using (IDalContext dalContext = new DalContext(_connectionStrings.HackConnection))
            {
                var dalRequest = new ValidateDalRequest {
                    EmailId = validateUserRequest.EmailId
                };
                var dalResponse = await _validateUser.ValidateUser(dalContext.DbConnection, dalRequest);

                //Check if success returned from DB
                if (!dalResponse.IsSuccess || dalResponse.UserId <= 0)
                {
                    response.Data = new ValidateUserResponse
                    {
                        SecurityToken = string.Empty,
                    };
                    response.TokenStatus = dalResponse.TokenStatus;
                    response.IsSuccess   = false;
                    response.Message     = dalResponse.ErrorMessage ?? ApiMessages.InternalError;
                }
                else
                {
                    response.IsSuccess = true;

                    //Encrypt token
                    var encryptedToken = Cryptology.EncryptString(string.Format("{0}##{1}##{2}", Utilities.CreateShortGuid(), dalResponse.UserId,
                                                                                DateTime.UtcNow.AddHours(Constants.ValidTokenDuration).ToString(ServiceConstants.DateFormat)), _logger);
                    try
                    {
                        response.IsSuccess = true;

                        {
                            response.Data = new ValidateUserResponse
                            {
                                SecurityToken = encryptedToken,
                            };
                            response.TokenStatus = dalResponse.TokenStatus;
                            response.IsSuccess   = dalResponse.IsSuccess;
                        }
                    }
                    catch (SqlException ex)
                    {   //Write Log for exception message
                        _logger.Error(ex.Message);
                        response.IsSuccess = false;
                        response.Message   = ServiceConstants.ErrorCodes.ContainsKey(ex.Number)
                            ? ServiceConstants.ErrorCodes[ex.Number]
                            : ApiMessages.InternalError;
                    }
                    catch (Exception ex)
                    {
                        _logger.Error("Error : {ex}", ex);
                        response.IsSuccess = false;
                        response.Message   = ApiMessages.InternalError;
                    }
                }
            }
            return(response);
        }
        public async Task <ValidateDalResponse> ValidateUser(IDbConnection connection, ValidateDalRequest request)
        {
            _logger.Information("Call ValidateUserRepository : ValidateUser");
            _logger.Information("Validating email id : " + request.EmailId);

            var response = new ValidateDalResponse {
                IsSuccess = true, TokenStatus = TokenStatus.NotRequired
            };

            try
            {
                var validateUserParams = new DynamicParameters();
                validateUserParams.Add(DbParamNames.EmailId, request.EmailId);

                response = (await connection.QueryAsync <dynamic>(SpConstants.ValidateUser, validateUserParams, commandType: CommandType.StoredProcedure)).Select(x => new ValidateDalResponse()
                {
                    UserId   = x.UserId,
                    UserName = x.FirstName
                }).FirstOrDefault();
                if (response == null)
                {
                    response = new ValidateDalResponse {
                        IsSuccess = true, TokenStatus = TokenStatus.Valid
                    };
                }
                else
                {
                    response.IsSuccess   = true;
                    response.TokenStatus = TokenStatus.Valid;
                }
                _logger.Information("Validated Email id : " + request.EmailId);
            }
            catch (SqlException ex)
            {
                _logger.Error(ex.Message);
                response.IsSuccess    = false;
                response.ErrorMessage = ServiceConstants.ErrorCodes.ContainsKey(ex.Number) ? ServiceConstants.ErrorCodes[ex.Number] : ApiMessages.UnknownError;
            }
            catch (Exception ex)
            {
                _logger.Error("Error : {ex}", ex);
                response = new ValidateDalResponse {
                    IsSuccess = false, ErrorMessage = ApiMessages.InternalError
                };
            }
            return(response);
        }