//public async Task<AccessTokenResponse> RegisterExternalUsingFirebaseAsync(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; // } //} private AccessTokenResponse CreateToken(User user) { return(new AccessTokenResponse() { User = user.ToViewModel <UserViewModel>(), AccessToken = jwtTokenProvider.CreateAccesstoken(user), Roles = user.UserRole.Select(ur => ur.RoleId.ToString()).ToArray() }); }