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; }
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(); }