コード例 #1
0
        public bool TryProcess(IUserSessionRequest <IUserSessionData> request, out IResponse response)
        {
            switch (request.RequestType)
            {
            case RequestType.Create:
                return(TryPersistRecord(request.Payload, out response));

            case RequestType.Update:
                return(TryUpdateRecord(request.Payload, out response));

            case RequestType.Delete:
                return(TryDeleteRecord(request.Payload, out response));

            case RequestType.Read:
            case RequestType.ReadAll:
            {
                //There's no real processing to do here
                response = null;
                return(true);
            }

            default:
            {
                var errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported);
                response = new UserSessionResponse().SetErrorResponse(errorMessage);
                return(false);
            }
            }
        }
コード例 #2
0
        public bool ProcessRequest(IUserSessionRequest <IUserSessionData> request, out IResponse response)
        {
            ErrorMessage error;

            if (!_validator.IsValid(request, out error))
            {
                response = new UserSessionResponse().SetErrorResponse(error);
                return(false);
            }

            if (!_sessionRequestProcessor.TryProcess(request, out response) && response != null)
            {
                return(false);
            }

            var requestType = request.RequestType;

            if (request.RequestType == RequestType.Read || request.RequestType == RequestType.ReadAll)
            {
                response = ReadFromState(request.Payload ??
                                         (IUserSessionData)Activator.CreateInstance(request.PayloadType));
            }


            else
            {
                ApplyToState(requestType, response);
            }

            return(true);
        }
コード例 #3
0
ファイル: UsersController.cs プロジェクト: qifu1177/webapi
 public IActionResult Load(string sessionid, string language)
 {
     return(this.RequestHandler(language, () =>
     {
         UserSessionResponse response = _userLogic.LoadUserInfo(language, sessionid);
         return Ok(response);
     }));
 }
コード例 #4
0
        private bool TryPersistRecord(IUserSessionData requestData, out IResponse response)
        {
            if (requestData is NopePet)
            {
                return(TryCreateNewPetDbRecord(requestData as NopePet, out response));
            }

            var error = new ErrorMessage(ErrorCode.RequestDataNotRecognised);

            response = new UserSessionResponse().SetErrorResponse(error);
            return(false);
        }
コード例 #5
0
        private bool TryUpdateRecord(IUserSessionData requestData, out IResponse response)
        {
            if (requestData is UserPetCareAction)
            {
                var userPetCareAction    = requestData  as UserPetCareAction;
                var requestedInteraction = _interactionRepository.Find(userPetCareAction.InteractionId);
                var metricInteraction    = _interactionRepository.FindAssociated(requestedInteraction);
                var newPetVital          = _userSessionBuilder.RebuildPetVital(metricInteraction, userPetCareAction);
                return(TryPersistRecordUpdate(newPetVital, out response));
            }

            response = new UserSessionResponse().SetErrorResponse(new ErrorMessage(ErrorCode.RequestDataNotRecognised));
            return(false);
        }
コード例 #6
0
        public UserSessionResponse GetUserSession()
        {
            UserSessionResponse response = null;

            try
            {
                var sessionModel = JsonConvert
                                   .DeserializeObject <UserSessionModel>(
                    httpContextAccessor.HttpContext.Session.GetString(SessionKeys.UserSessionKey));

                response = new UserSessionResponse
                {
                    Id         = sessionModel.Id,
                    Permission = sessionModel.Permission
                };
            }
            catch (Exception) { }

            return(response);
        }
コード例 #7
0
        public async Task <UserSessionResponse> AuthenticateAsync(AuthenticateUserRequest model)
        {
            string encryptedPassword = _encryptionUtil.Encrypt(model.Password);

            var user = await _userService.Authenticate(model.EmailAddress.ToLower());

            if (user == null)
            {
                throw new CannotAuthenticateException();
            }
            UserSessionResponse session = null;

            if (user.FailedLoginCount < 5 && user.Password == encryptedPassword)
            {
                user.LoggedInAt       = DateTime.UtcNow;
                user.FailedLoginCount = 0;
                session = new UserSessionResponse()
                {
                    Token         = GenerateJSONWebToken(user),
                    RefreshToken  = Guid.NewGuid().ToString().Replace("-", ""),
                    UserId        = user.Id,
                    Name          = user.Name,
                    Role          = user.Role,
                    EmailAddress  = user.EmailAddress,
                    EmailVerified = user.EmailVerified,
                    Phone         = user.Mobile
                };
            }
            else
            {
                user.FailedLoginCount++;
            }
            await _userService.Update(user);

            if (session == null)
            {
                throw new CannotAuthenticateException();
            }
            return(session);
        }
コード例 #8
0
        private bool TryPersistRecordUpdate(IUserSessionData processedData, out IResponse response)
        {
            if (processedData is PetVital)
            {
                var          petCareResponse = new UserSessionPetCareResponse();
                var          petMetric       = (processedData as PetVital).ToPetMetricModel();
                ErrorMessage error;
                if (!_petMetricPersister.TryPersistUpdate(petMetric, out error))
                {
                    response = petCareResponse.SetErrorResponse(error);
                    return(false);
                }

                response = petCareResponse.SetSuccessResponse(processedData as PetVital);
                return(true);
            }

            var genericError = new ErrorMessage(ErrorCode.RequestDataNotRecognised);

            response = new UserSessionResponse().SetErrorResponse(genericError);
            return(false);
        }
コード例 #9
0
        private UserSessionResponse CreateUserSessionResponse(AppUser user)
        {
            UserSessionResponse response = new UserSessionResponse
            {
                UserId          = "",
                SessionId       = user.Session.Id,
                SessionUpdateTs = user.Session.UpdateTs.ToJsTime(),
                UserName        = user.Name,
                UpdateTs        = user.UpdateTs.ToJsTime(),
                Email           = user.Email,
                RoleId          = user.RoleId
            };

            if (user.UserInfo != null)
            {
                response.BirthDate     = user.UserInfo.BirthDate?.ToDateString();
                response.PhoneNumber   = user.UserInfo.PhoneNumber;
                response.PhotoPath     = user.UserInfo.PhotoPath;
                response.MaritalStatus = user.UserInfo.MaritalStatus;
            }
            response.MaxUploadFileSize = _fileService.GetRestFreeSize(user.Id);
            return(response);
        }
コード例 #10
0
        private bool TryLogin(UserCredentials userCredentials, out IResponse response)
        {
            //We have already validated that we've found the user
            var foundUser = _users.GetUserByEmail(userCredentials.Email);

            //But just in case we should check for null
            if (foundUser != null)
            {
                var userSessionState = UserSessionState.Initialise(foundUser, _users, _pets, _animals, _interactions,
                                                                   _config,
                                                                   ResponseBuilder.UserSessionBuilder,
                                                                   _userSessionContainer);

                _currentUserSessions.Add(userSessionState);
                var userSession = userSessionState.GetUserSession();
                response = new UserSessionResponse().SetSuccessResponse(userSession);
                return(true);
            }

            var error = new ErrorMessage(ErrorCode.UserSessionNotFound);

            response = new UserSessionResponse().SetErrorResponse(error);
            return(false);
        }
コード例 #11
0
        public UserSessionResponse UserHome()
        {
            var response = new UserSessionResponse();

            return(response.SetSuccessResponse(new UserSession()));
        }