public HttpResponseMessage RegisterUser(UserRegisterModel model) { var responseMsg = this.ExceptionHandler( () => { var context = new ForumContext(); using (context) { UserDataPersister.ValidateUsername(model.Username); UserDataPersister.ValidateNickname(model.Nickname); UserDataPersister.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var nicknameToLower = model.Nickname.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower || usr.Nickname.ToLower() == nicknameToLower); if (user != null) { throw new InvalidOperationException("Invalid Username or Password"); } var newUser = new User { Username = usernameToLower, Nickname = model.Nickname, AuthCode = model.AuthCode }; context.Users.Add(newUser); context.SaveChanges(); newUser.SessionKey = UserDataPersister.GenerateSessionKey(newUser.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel { Nickname = newUser.Nickname, SessionKey = newUser.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = newUser.Id })); return response; } }); return responseMsg; }
public HttpResponseMessage RegisterUser(UserModel model) { var registerResponse = this.PerformOperationAndHandleExceptions(() => { this.ValidateUsername(model.Username); this.ValidateNickname(model.Nickname); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var nicknameToLower = model.Nickname.ToLower(); var user = repository.All() .FirstOrDefault(usr => usr.Username == usernameToLower || usr.Nickname == nicknameToLower); if (user != null) { throw new InvalidOperationException("User allready exist"); } user = new User() { Username = usernameToLower, Nickname = model.Nickname, AuthCode = model.AuthCode, }; repository.Add(user); user.SessionKey = this.GenerateSessionKey(user.UserId); repository.Update(user.UserId, user); var userModel = new LoggedUserModel() { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, userModel); return response; }); return registerResponse; }
public HttpResponseMessage LoginUser(UserModel model) { var baseResponse = this.PerformOperationAndHandleExceptions(() => { this.ValidateUsername(model.Username); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var user = repository.All() .FirstOrDefault(usr => usr.Username == usernameToLower && usr.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Username is not exist!"); } if (user.SessionKey == null) { user.SessionKey = this.GenerateSessionKey(user.UserId); repository.Update(user.UserId, user); } var userModel = new LoggedUserModel() { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, userModel); return response; }); return baseResponse; }
public HttpResponseMessage LoginUser(UserLoginModel model) { var responseMsg = this.ExceptionHandler( () => { var context = new ForumContext(); using (context) { UserDataPersister.ValidateUsername(model.Username); UserDataPersister.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower && usr.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid Username or Password"); } user.SessionKey = UserDataPersister.GenerateSessionKey(user.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); return responseMsg; }
public void LogoutUser( [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { this.ExceptionHandler( () => { var context = new ForumContext(); using (context) { var user = context.Users.FirstOrDefault( usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid Username or Password"); } user.SessionKey = null; context.SaveChanges(); var loggedModel = new LoggedUserModel { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); }
public HttpResponseMessage PostLoginUser(UserModel model) { var responceMsg = this.PerformOperationAndHandleExceptions(() => { var context = new ForumDbContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var authCode = model.AuthCode; var user = context.Users.FirstOrDefault(usr => usr.Username == usernameToLower && usr.AuthCode == authCode); if (user == null) { throw new InvalidOperationException("Ivalid username or password"); } if (user.SessionKey == null) { user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); } var loggedModel = new LoggedUserModel() { SessionKey = user.SessionKey, Nickname = user.Nickname }; var responce = this.Request.CreateResponse(HttpStatusCode.OK, loggedModel); return responce; } }); return responceMsg; }
public HttpResponseMessage PutLogoutUser(LoggedUserModel model) { var responceMsg = this.PerformOperationAndHandleExceptions(() => { var context = new ForumDbContext(); using (context) { var sessionKey = model.SessionKey; var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Something went terribly wrong"); } user.SessionKey = null; context.SaveChanges(); var responce = this.Request.CreateResponse(HttpStatusCode.NoContent); return responce; } }); return responceMsg; }
public HttpResponseMessage PostRegisterUser(UserModel model) { var responceMsg = this.PerformOperationAndHandleExceptions(() => { var context = new ForumDbContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateNickname(model.Nickname); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var nicknameToLower = model.Nickname.ToLower(); var user = context.Users.FirstOrDefault(usr => usr.Username == usernameToLower || usr.Nickname.ToLower() == nicknameToLower); if (user != null) { throw new InvalidOperationException("User Exists"); } user = new User() { Username = usernameToLower, Nickname = model.Nickname, AuthCode = model.AuthCode }; context.Users.Add(user); context.SaveChanges(); user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel() { SessionKey = user.SessionKey, Nickname = user.Nickname }; var responce = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return responce; } }); return responceMsg; }