public async Task <AccessTokenResponse> RegisterExternalUsingFirebaseAsync(FirebaseRegisterExternal external) { FirebaseRegisterExternalValidation validation = new FirebaseRegisterExternalValidation(); validation.ValidateAndThrow(external); FirebaseToken decodedToken = validation.ParsedToken; var claims = decodedToken.Claims; string email = claims["email"] + ""; string name = claims["name"] + ""; string avatar = claims["picture"] + ""; var user = repository.GetUserByUsername(email); if (user == null) { user = new User() { Email = email, Username = email, Fullname = name }; user.UserRole.Add(new UserRole() { RoleId = (int)RolesEnum.MEMBER }); await this.repository.AddAsync(user); } return(CreateToken(user)); }
private async Task <AccessTokenResponse> AuthenticateByFirebaseAsync(FirebaseRegisterExternal external) { using (var trans = unitOfWork.CreateTransaction()) { AccessTokenResponse token = null; try { FirebaseRegisterExternalValidation validation = new FirebaseRegisterExternalValidation(); validation.ValidateAndThrow(external); FirebaseToken decodedToken = validation.ParsedToken; var claims = decodedToken.Claims; string email = claims["email"] + ""; string name = claims["name"] + ""; string avatar = claims["picture"] + ""; var user = repository.GetUserByUsername(email); if (user == null) { user = new User() { Email = email, Username = email, Fullname = name }; user.UserRole.Add(new UserRole() { RoleId = (int)RolesEnum.MEMBER }); await this.repository.AddAsync(user); } token = CreateToken(user); trans.Commit(); } catch (Exception e) { trans.Rollback(); throw e; } return(token); } }