public HttpResponseMessage PostLoginUser(UserModel model) { try { ValidateUsername(model.Username); var context = new MoviesContext(); using (context) { var user = context.Users.FirstOrDefault(u => u.Username == model.Username && u.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } if (user.SessionKey == null) { user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); } var loggedModel = new LoggedUserModel() { Username = model.Username, FirstName = model.FirstName, LastName = model.LastName, IsAdmin = user.IsAdmin, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } } catch (Exception ex) { var response = this.Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message); return response; } }
public HttpResponseMessage PostRegisterUser(UserModel model) { try { var dbContext = new MoviesContext(); using (dbContext) { this.ValidateUsername(model.Username); this.ValidateFirstname(model.FirstName); this.ValidateLastname(model.LastName); var user = dbContext.Users.FirstOrDefault(u => u.Username.ToLower() == model.Username.ToLower()); if (user != null) { throw new InvalidOperationException("Users exists"); } user = new User() { Username = model.Username, FirstName = model.FirstName, LastName = model.LastName, AuthCode = model.AuthCode, IsAdmin = false }; dbContext.Users.Add(user); dbContext.SaveChanges(); user.SessionKey = this.GenerateSessionKey(user.Id); dbContext.SaveChanges(); var loggedModel = new LoggedUserModel() { Username = model.Username, FirstName = model.FirstName, LastName = model.LastName, IsAdmin = false, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } } catch (Exception ex) { var response = this.Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message); return response; } }