Esempio n. 1
0
        public async Task <AppUser> Authenticate(UserTokenIdModel token)
        {
            //NB: These config files are loaded from the user secrets.
            var appToken = await GenerateAppAccessToken(_configuration["Facebook:AppId"], _configuration["Facebook:AppSecret"]);

            var isValid = await DebugUserAccessToken(appToken, token.TokenId);

            if (isValid)
            {
                var user = await CreateOrGetUser(token);

                return(user);
            }

            throw new Exception("Invalid Token");
        }
        public async Task <IActionResult> Google([FromBody] UserTokenIdModel token)
        {
            try
            {
                var user = await _googleAuthService.Authenticate(token);

                await _signInManager.SignInAsync(user, true);

                var jwtToken = GenerateJwtToken(user.Email, user);
                return(Ok(jwtToken));
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                return(BadRequest(e.Message));
            }
        }
Esempio n. 3
0
        private async Task <AppUser> CreateOrGetUser(UserTokenIdModel userToken)
        {
            var user = await _userManager.FindByEmailAsync(userToken.Email);

            if (user == null)
            {
                var appUser = new AppUser
                {
                    FirstName   = userToken.Name,
                    SecondName  = userToken.FamilyName,
                    Email       = userToken.Email,
                    PictureURL  = userToken.Picture,
                    OAuthIssuer = "facebook",
                    UserName    = userToken.FamilyName + "_" + userToken.GivenName
                };
                var identityUser = await _userManager.CreateAsync(appUser);

                return(appUser);
            }
            return(user);
        }
Esempio n. 4
0
        private async Task <AppUser> CreateOrGetUser(Payload payload, UserTokenIdModel userToken)
        {
            var user = await _userManager.FindByEmailAsync(payload.Email);

            if (user == null)
            {
                var appUser = new AppUser
                {
                    FirstName    = userToken.Name,
                    SecondName   = userToken.FamilyName,
                    Email        = userToken.Email,
                    PictureURL   = userToken.Picture,
                    OAuthIssuer  = payload.Issuer,
                    OAuthSubject = payload.Subject,
                    UserName     = userToken.Name.Replace(" ", "_")
                };
                var identityUser = await _userManager.CreateAsync(appUser);

                return(appUser);
            }

            return(user);
        }
Esempio n. 5
0
        public async Task <AppUser> Authenticate(UserTokenIdModel userTokenModel)
        {
            var payload = await GoogleJsonWebSignature.ValidateAsync(userTokenModel.TokenId, new GoogleJsonWebSignature.ValidationSettings());

            return(await CreateOrGetUser(payload, userTokenModel));
        }