Exemple #1
0
        public async Task <bool> ValidateGoogleLogin(SocialLoginCredentials login)
        {
            try
            {
                var result = await GoogleJsonWebSignature.ValidateAsync(login.IdToken);

                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(false);
            }
        }
        public async Task <ActionResult> ValidateGoogleAuth(SocialLoginCredentials login)
        {
            var result = await this.authService.ValidateGoogleLogin(login);

            if (result == false)
            {
                return(BadRequest());
            }
            else
            {
                var authDetails = await this.authService.GetTokenForSocialLogin(login);

                return(Ok(authDetails));
            }
        }
Exemple #3
0
        public async Task <AuthDetails> GetTokenForSocialLogin(SocialLoginCredentials loginCredentials)
        {
            var user = await this.userManager.FindByEmailAsync(loginCredentials.Email);

            //user dosent exist, create new user in DB and the related token
            if (user == null)
            {
                IdentityUser newUser = new IdentityUser
                {
                    UserName = loginCredentials.Name,
                    Email    = loginCredentials.Email
                };

                var createUser = await this.userManager.CreateAsync(newUser);

                if (createUser.Succeeded)
                {
                    AuthDetails authDetails = new AuthDetails
                    {
                        AccessToken = this.GenerateToken(newUser, "User"),
                        UserId      = newUser.Id,
                        UserRole    = "User",
                        UserName    = newUser.UserName
                    };

                    return(authDetails);
                }
                else
                {
                    throw new Exception("User cannot be created");
                }
            }
            else
            {
                var role = await this.userManager.IsInRoleAsync(user, "Admin") ? "Admin" : "User";

                //User exists, create the token
                AuthDetails authDetails = new AuthDetails
                {
                    AccessToken = this.GenerateToken(user, role),
                    UserId      = user.Id,
                    UserRole    = role,
                    UserName    = user.UserName
                };

                return(authDetails);
            }
        }