Esempio n. 1
0
        //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()
            });
        }