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); }
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)); }