예제 #1
0
        public HttpResponseMessage PostRegisterUser([FromBody]UserDto userDto)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(
                () =>
                {
                    if (userDto == null)
                    {
                        throw new ArgumentException("Cannot register an empty user.");
                    }

                    this.ValidateUsername(userDto.Username);
                    this.ValidateNickname(userDto.Nickname);
                    this.ValidateAuthCode(userDto.AuthCode);

                    var db = new ForumContext();

                    var user = db.Users.Where(u =>
                        u.Username.ToLower() == userDto.Username.ToLower() || u.Nickname.ToLower() == userDto.Nickname.ToLower())
                        .FirstOrDefault();

                    if (user != null)
                    {
                        throw new ApplicationException("User exist.");
                    }

                    user = new User()
                    {
                        Nickname = userDto.Nickname,
                        Username = userDto.Username,
                        AuthCode = userDto.AuthCode
                    };

                    db.Users.Add(user);
                    db.SaveChanges();

                    string sessionKey = this.GenerateSessionKey(user.Id);
                    user.SessionKey = sessionKey;
                    db.SaveChanges();

                    var userLogedIn = new UserLogedDto()
                    {
                        Nickname = user.Nickname,
                        SessionKey = sessionKey
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.Created,
                                            userLogedIn);

                    return response;
                });

            return responseMsg;
        }
예제 #2
0
        public void LogoutUser([FromBody]UserLogedDto userLogedDto)
        {
            if (userLogedDto == null)
            {
                throw new ArgumentException("Cannot logout an empty user.");
            }

            var db = new ForumContext();

            var user = db.Users.Where(u => u.SessionKey == userLogedDto.SessionKey).FirstOrDefault();

            if (user == null)
            {
                throw new ApplicationException("Invalid session key.");
            }

            user.SessionKey = null;
            db.SaveChanges();
        }