public async Task <IActionResult> Login(UserRegistrationAndLoginData loginData) { if (loginData.Email == string.Empty && loginData.UserName == string.Empty) { return(Json(new { result = "failed", message = "EmptyIdentity" })); } var success = false; var user = new Users(); if (loginData.Email != string.Empty) { user = await _context.Users.FirstOrDefaultAsync(u => u.Email == loginData.Email); var loginPasswordHash = HashHelper.CreateHashedString(user.PasswordSalt, loginData.Password); if (user.PasswordHash == loginPasswordHash) { success = true; } } if (loginData.UserName != string.Empty) { user = await _context.Users.FirstOrDefaultAsync(u => u.Username == loginData.UserName); var loginPasswordHash = HashHelper.CreateHashedString(user.PasswordSalt, loginData.Password); if (user.PasswordHash == loginPasswordHash) { success = true; } } if (!success) { return(Json(new { result = "failed" })); } var sessionToken = HashHelper.Md5Hash(user.Email + user.PasswordHash); UserSession.SessionEnd = DateTime.UtcNow.AddMinutes(40.0); UserSession.SessionId = sessionToken; UserSession.SessionRole = ""; return(Json(new { result = "success", message = UserSession.SessionId })); }
public async Task <IActionResult> Register(UserRegistrationAndLoginData signupData) { System.Diagnostics.Debug.WriteLine("console diagnostic = " + signupData.Email + " " + signupData.Password + " " + signupData.UserName + " " + signupData.PhoneNumber); var(key, value) = signupData.CheckPassword(); if (!key) { return(Json(new { result = "failed", message = value })); } (key, value) = await signupData.CheckUserName(_context); if (!key) { return(Json(new { result = "failed", message = value })); } (key, value) = await signupData.CheckEmail(_context); if (!key) { return(Json(new { result = "failed", message = value })); } if (!signupData.CheckPhoneNumber()) { return(Json(new { result = "failed", message = "PhoneNumberFormat" })); } KeyValuePair <string, string> PasswordData = HashHelper.CreateHashedString(signupData.Password); var user = new Users { Username = signupData.UserName, PasswordHash = PasswordData.Value, PasswordSalt = PasswordData.Key, Email = signupData.Email, PhoneNumber = signupData.PhoneNumber }; await _context.Users.AddAsync(user); var result = await _context.SaveChangesAsync(); if (result <= 0) { return(Json(new { result = "failed", message = "InsertionFailed" })); } var newUser = await _context.Users.FirstOrDefaultAsync(u => u.Email == user.Email); var confirmToken = HashHelper.Md5Hash(user.Email); newUser.EmailToken = confirmToken; await _context.SaveChangesAsync(); //Send the Account Activation Email and return final result if (_emailService.SendUserAccountActivationEmail(newUser)) { return(Json(new { result = "success" })); } else { return(Json(new { result = "failed", message = "EmailSentFailed" })); } }