public HttpResponseMessage LoginUser(UserLoginModel model) { var responseMsg = this.ExecuteOperationOrHandleExceptions( () => { //UserDataPersister.ValidateUsername(model.Username); UserDataPersister.ValidateAuthCode(model.AuthCode); var users = this.Data.Users; var user = users.FirstOrDefault( usr => usr.Email == model.Email && usr.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid Username or Password"); } user.SessionKey = UserDataPersister.GenerateSessionKey(user.Id); this.Data.SaveChanges(); var loggedModel = new UserLoggedModel { Email = user.Email, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = user.Id })); return response; }); return responseMsg; }
public HttpResponseMessage RegisterUser(UserRegisterModel model) { var responseMsg = this.ExecuteOperationOrHandleExceptions( () => { UserDataPersister.ValidateAuthCode(model.AuthCode); //TODO: Validate Email //UserDataPersister.ValidateEmail(model.Email); var users = this.Data.Users; var user = users.FirstOrDefault( usr => usr.Email == model.Email); if (user != null) { throw new InvalidOperationException("Wrong email."); } var newUser = new User { Email = model.Email, AuthCode = model.AuthCode }; var userInDb = this.Data.Users.Add(newUser); this.Data.SaveChanges(); var sessionKey = UserDataPersister.GenerateSessionKey(userInDb.Id); userInDb.SessionKey = sessionKey; this.Data.SaveChanges(); var loggedModel = new UserLoggedModel { Email = userInDb.Email, SessionKey = userInDb.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = userInDb.Id })); return response; }); return responseMsg; }