public async Task <User> Login(string username, string password) { if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { Alertify.Push("Invalid username or password", AlertType.Error); return(null); } var user = await database.UserRepository.Find(u => u.Username.ToLower() == username.ToLower()); if (user == null) { Alertify.Push("Invalid username or password", AlertType.Error); return(null); } if (user.IsBlocked) { Alertify.Push("Your account has been blocked", AlertType.Error); return(null); } if (Utils.VerifyPassword(password, user.PasswordHash, user.PasswordSalt)) { if (!user.EmailConfirmed) { Alertify.Push("Account is not confirmed", AlertType.Error); return(null); } return(user); } Alertify.Push("Invalid username or password", AlertType.Error); return(null); }
public async Task <bool> ChangeEmail(string newEmail) { if (await authService.EmailExists(newEmail)) { Alertify.Push("Email already exists", AlertType.Error); return(false); } var user = await GetCurrentUser(); user.SetEmail(newEmail); return(await database.Complete()); }
public async Task <User> Register(string username, string email, string password) { if (await EmailExists(email)) { Alertify.Push("Email address already exists", AlertType.Error); return(null); } if (await UsernameExists(username)) { Alertify.Push("Username already exists", AlertType.Error); return(null); } var passwordSalt = Utils.CreateSalt(); var saltedPasswordHash = Utils.GenerateHash(password, passwordSalt); var user = new UserBuilder() .SetUserData(username, email) .SetPassword(saltedPasswordHash, passwordSalt) .Build(); database.UserRepository.Add(user); if (await database.Complete()) { var registerToken = Token.Create(TokenType.Register); user.Tokens.Add(registerToken); if (await database.Complete()) { string encryptedToken = cryptoService.Encrypt(registerToken.Code); string callbackUrl = $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}Auth/ConfirmAccount?email={user.Email}&token={encryptedToken}"; return(await emailSender.Send(Constants.ActivationAccountEmail(email, username, callbackUrl)) ? user : null); } return(null); } else { Alertify.Push("Creating account failed", AlertType.Error); return(null); } }