示例#1
0
        public TUser CreateUserAndActivationRequest(TCreateUserForm form, Uri activateUserUrl)
        {
            var login = form.Login.Trim();

            if (!EmailValidator.Validate(login))
            {
                throw new IncorrectEmailException();
            }

            var password = form.Password;

            if (!passwordValidator.Validate(password))
            {
                throw new WeakPasswordException();
            }

            var existingUser = userStorage.FindUserByLogin(login);

            if (existingUser != null)
            {
                throw new LoginAlreadyExistsException(login);
            }

            var userId = Guid.NewGuid();
            var user   = userProcessor.MakeUser(form, userId);

            SetUserPassword(user, password);
            userStorage.CreateUser(user);
            SendUserActivationRequest(user, activateUserUrl);
            return(userStorage.FindUser(userId));
        }
        public void SignUserIn(HttpResponseMessage response, Guid userId, bool rememberMe)
        {
            var user = userStorage.FindUser(userId);

            if (user == null)
            {
                throw new Exception($"Cannot find user {userId}");
            }
            var authenticationToken         = new AuthenticationToken(user.UserId);
            var encryptedBase64EncodedToken = authenticationTokenCryptography.EncryptTokenToBase64(authenticationToken);

            webApiAuthenticationCookieManager.SetTokenCookie(response, encryptedBase64EncodedToken, rememberMe);
        }
示例#3
0
        public void SignUserIn(HttpContextBase httpContext, Guid userId, bool rememberMe)
        {
            var user = userStorage.FindUser(userId);

            if (user == null)
            {
                throw new Exception(string.Format("Cannot find user {0}", userId));
            }
            var authenticationToken         = new AuthenticationToken(user.UserId);
            var encryptedBase64EncodedToken = authenticationTokenCryptography.EncryptTokenToBase64(authenticationToken);

            authenticationCookieManager.SetTokenCookie(httpContext, encryptedBase64EncodedToken, rememberMe);
        }
示例#4
0
        public ActionResult <User> GetbyId(int id)
        {
            User tmp = userStorage.FindUser(id);

            if (!userStorage.ContainsUser(id))
            {
                return(NotFound());
            }
            else
            {
                return(tmp);
            }
        }
        public TUser ChangePassword(Guid changePasswordRequestId, string password)
        {
            var changePasswordRequest = changePasswordRequestDataStorage.FindChangePasswordRequest(changePasswordRequestId);

            if (changePasswordRequest == null)
            {
                throw new ChangePasswordRequestNotFoundException(changePasswordRequestId);
            }
            if (changePasswordRequest.IsUsed)
            {
                throw new ChangePasswordRequestAlreadyCompleteException(changePasswordRequestId);
            }
            if (changePasswordRequest.Expired)
            {
                throw new ChangePasswordRequestExpriredException(changePasswordRequestId);
            }

            if (!passwordValidator.Validate(password))
            {
                throw new WeakPasswordException();
            }

            var user = userStorage.FindUser(changePasswordRequest.UserId);

            if (user == null)
            {
                throw new UserNotFoundException(changePasswordRequest.UserId);
            }

            changePasswordRequest.PasswordChangeDateTime = DateTimeOffset.UtcNow;
            changePasswordRequestDataStorage.UpdateChangePasswordRequest(changePasswordRequest);

            SetUserPassword(user, password);

            if (!user.IsActive)
            {
                user.DateTimeActivated = DateTimeOffset.UtcNow;
            }

            userStorage.UpdateUser(user);
            return(userStorage.FindUser(user.UserId));
        }
        public TOrganizationUser AcceptExistingUserInvitation(Guid userInvitationId)
        {
            var userInvitation = GetUserInvitation(userInvitationId);
            var utcNow         = DateTimeOffset.UtcNow;

            var user = userInvitation.InvitedUserId.HasValue
                                ? userStorage.FindUser(userInvitation.InvitedUserId.Value)
                                : userStorage.FindUserByLogin(userInvitation.Email);

            if (user == null)
            {
                throw new Exception("Invited user not found");
            }

            var organizationUserId       = Guid.NewGuid();
            var existingOrganizationUser = organizationUserStorage
                                           .FindOrganizationUsersByUser(user.UserId)
                                           .FirstOrDefault(u => u.OrganizationId == organizationUserId && u.DateTimeDeleted == null);

            if (existingOrganizationUser != null)
            {
                throw new ClientSideErrorMessageException("Извините, это приглашение уже принято", $"User {user.UserId} already added to Organization {organizationUserId} (Invitation {userInvitationId})");
            }

            var organizationUser = new TOrganizationUser
            {
                OrganizationUserId = organizationUserId,
                OrganizationId     = userInvitation.OrganizationId,
                UserId             = user.UserId,
                DateTimeCreated    = utcNow
            };

            userInvitation.Status            = UserInvitationStatus.Accepted;
            userInvitation.DateTimeProcessed = utcNow;
            userInvitationStorage.UpdateUserInvitation(userInvitation);

            organizationUserStorage.CreateOrganizationUser(organizationUser);
            return(organizationUserStorage.FindOrganizationUser(organizationUserId));
        }