private async Task <SignedInUser> GenerateUserAccess(DopplerUser user)
        {
            var accessJwtToken = await AssignTokenAsync(user.PhoneNumber);

            var refreshToken = await AssignRefreshTokenAsync(user);

            return(user.GetSignedInUser(accessJwtToken, refreshToken));
        }
        public async Task<bool> AddUserAsync(DopplerUser dopplerUser)
        {
            if (!(await CheckIsUserDuplicateAsync(dopplerUser)))
            {
                await this.databaseContext.DopplerUsers.AddAsync(dopplerUser);
                await this.databaseContext.SaveChangesAsync();
                return true;
            }

            return false;
        }
        public async Task<JwtToken> AssignNewRefreshTokenAsync(DopplerUser dopplerUser, JwtToken jwtToken)
        {
            if (dopplerUser.RefreshToken != null)
            {
                this.databaseContext.RefreshTokens.Remove(dopplerUser.RefreshToken);
                //FIXME
                await this.databaseContext.SaveChangesAsync();
            }

            dopplerUser.RefreshToken = jwtToken;
            this.databaseContext.DopplerUsers.Update(dopplerUser);
            await this.databaseContext.SaveChangesAsync();
            return jwtToken;
        }
        public async Task <SignedInUser> RegisterUserTask(RegisterUserModel registerUserModel)
        {
            DopplerUser registeredUser = DopplerUser.InitializeNewUser(registerUserModel, this.cryptographyProvider);
            var         userAdded      = await this.repository.AddUserAsync(dopplerUser : registeredUser);

            if (!userAdded)
            {
                return(await Authenticate(registerUserModel.PhoneNumber, registerUserModel.Password));
            }

            var token = await AssignTokenAsync(registeredUser.PhoneNumber);

            var refreshToken = await AssignRefreshTokenAsync(registeredUser);

            return(registeredUser.GetSignedInUser(token, refreshToken));
        }
 private async Task<bool> CheckIsUserDuplicateAsync(DopplerUser dopplerUser)
 {
     return await this.databaseContext.DopplerUsers.AnyAsync(x =>
         x.PhoneNumber == dopplerUser.PhoneNumber || x.Email == dopplerUser.Email ||
         x.Login == dopplerUser.Login);
 }
Exemple #6
0
 public async Task Authenticate(string claim)
 {
     this.AuthenticatedUser = await repository.GetDopplerUserWithPassword(claim);
 }
        private async Task <JwtToken> AssignRefreshTokenAsync(DopplerUser dopplerUser)
        {
            var refreshToken = this.cryptographyProvider.GenerateRefreshToken();

            return(await this.repository.AssignNewRefreshTokenAsync(dopplerUser, refreshToken));
        }