Example #1
0
        public async Task <User> RegisterAsync(string email, string username, string password)
        {
            var user = await _context.Users.FirstOrDefaultAsync(x => x.Email == email);

            if (user != null)
            {
                throw new Exception($"User with email: '{email}' already exists.");
            }
            var salt         = _encrypter.GetSalt(password);
            var hash         = _encrypter.GetHash(password, salt);
            var hashActivate = _encrypter.GetActivate(password);

            user = new User(email, username, hash, salt, hashActivate);
            await _emailSender.SendActivateEmail(email, hashActivate);

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            return(user);
        }