public HttpResponseMessage RegisterUser(UserRegisterModel userToRegister)
        {
            UserValidator.ValidateAuthCode(userToRegister.AuthCode);
            UserValidator.ValidateNickname(userToRegister.Nickname);
            UserValidator.ValidateUsername(userToRegister.Username);

            User newUser = null;
            try
            {
                newUser = UsersMapper.ToUserEntity(userToRegister);
            }
            catch (Exception)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid user register model provided!");
            }

            usersRepository.Add(newUser);

            User inDbUser = this.usersRepository.GetByUsernameAndAuthCode(newUser.Username, newUser.AuthCode);
            inDbUser.SessionKey = UserValidator.GenerateSessionKey(inDbUser.ID);
            this.usersRepository.Update(inDbUser.ID, inDbUser);
            UserLoggedModel loggedUser = new UserLoggedModel()
                {
                    Nickname = inDbUser.Nickname,
                    SessionKey = inDbUser.SessionKey
                };

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, loggedUser);
            response.Headers.Location = new Uri(Url.Link("NewsApi", new { sessionKey = loggedUser.SessionKey }));
            return response;
        }
示例#2
0
        public static User ToUserEntity(UserRegisterModel userModel)
        {
            User userEntity = new User()
                {
                    Username = userModel.Username.ToLower(),
                    AuthCode = userModel.AuthCode,
                    Nickname = userModel.Nickname
                };

            return userEntity;
        }