Example #1
0
        public AuthenticateAccountResponse Register(RegisterAccountRequest request)
        {
            if (_context.Accounts.Any(x => x.EmailAddress == request.EmailAddress))
            {
                // There is already an account with given email address
                throw new AccountAlreadyExistsException();
            }

            // Create new account object from the request model
            var account = new Account()
            {
                UserFullName = request.UserFullName,
                EmailAddress = request.EmailAddress,
                PasswordHash = BC.HashPassword(request.Password)
            };

            // Save account
            _context.Accounts.Add(account);
            _context.SaveChanges();

            // Create a response that includes the access token
            var response = new AuthenticateAccountResponse
            {
                AccountId    = account.AccountId,
                UserFullName = account.UserFullName,
                EmailAddress = account.EmailAddress,
                AccessToken  = GenerateJsonWebToken(account)
            };

            return(response);
        }
Example #2
0
        public AuthenticateAccountResponse Authenticate(AuthenticateAccountRequest request)
        {
            // Get the account if it exists
            var account = _context.Accounts.SingleOrDefault(x => x.EmailAddress == request.EmailAddress);

            // Gernerate password hash and test.  Throw exception if email doesn't exists or password incorrect
            if (account == null || !BC.Verify(request.Password, account.PasswordHash))
            {
                throw new AuthenticationFailedException();
            }

            // Create a response that includes the access token
            var response = new AuthenticateAccountResponse
            {
                AccountId    = account.AccountId,
                UserFullName = account.UserFullName,
                EmailAddress = account.EmailAddress,
                AccessToken  = GenerateJsonWebToken(account)
            };

            return(response);
        }