public HttpResponseMessage LoginUser(LoginUserModel model) { return this.ExecuteOperationAndHandleExceptions(() => { if (model == null) { throw new FormatException("invalid username and/or password"); } UserPersister.ValidateLoginUser(model); var context = new GameContext(); var user = context.Users.FirstOrDefault(u => u.Username == model.Username.ToLower() && u.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } if (user.SessionKey == null) { user.SessionKey = UserPersister.GenerateSessionKey(user.Id); context.SaveChanges(); } var responseModel = new UserResponseModel() { Nickname = user.Nickname, SesionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel); return response; }); }
public HttpResponseMessage RegisterUser(RegisterUserModel model) { return this.ExecuteOperationAndHandleExceptions(() => { var context = new GameContext(); var dbUser = UserPersister.GetUserByUsernameAndDisplayName(model.Username, model.Nickname, context); if (dbUser != null) { throw new InvalidOperationException("This user already exists in the database"); } dbUser = new User() { Username = model.Username.ToLower(), Nickname = model.Nickname, AuthCode = model.AuthCode, Role = context.Roles.Where(r => r.Name == "user").FirstOrDefault() }; context.Users.Add(dbUser); dbUser.SessionKey = UserPersister.GenerateSessionKey(dbUser.Id); context.SaveChanges(); var responseModel = new UserResponseModel() { Nickname = dbUser.Nickname, SesionKey = dbUser.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel); return response; }); }