private async Task <Entities.User> AutoProvisionWindowsUser(string provider,
                                                                    string providerUserId, IEnumerable <Claim> claims)
        {
            if (_windowsKeyMap.ContainsKey(providerUserId))
            {
                // find matching user
                var existingUser = await
                                   _localUserService.GetUserBySubjectAsync(_windowsKeyMap[providerUserId]);

                if (existingUser != null)
                {
                    await _localUserService.AddExternalProviderToUser(
                        existingUser.Subject,
                        provider,
                        providerUserId);

                    await _localUserService.SaveChangesAsync();

                    return(existingUser);
                }
            }

            var user = _localUserService.ProvisionUserFromExternalIdentity(provider, providerUserId,
                                                                           new List <Claim>());
            await _localUserService.SaveChangesAsync();

            return(user);
        }
        public async Task <IActionResult> RegisterUserFromFacebook(
            RegisterUserFromFacebookViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Create claims
            var claims = new List <Claim>()
            {
                new Claim(JwtClaimTypes.Email, model.Email),
                new Claim(JwtClaimTypes.GivenName, model.GivenName),
                new Claim(JwtClaimTypes.FamilyName, model.FamilyName),
                new Claim(JwtClaimTypes.Address, model.Address),
                new Claim("country", model.Country)
            };

            //Provision the user
            _localUserService.ProvisionUserFromExternalIdentity(model.Provider, model.ProviderUserId, claims);
            await _localUserService.SaveChangesAsync();

            //redirect
            return(RedirectToAction("Callback", "External"));
        }
Exemple #3
0
        public async Task <IActionResult> RegisterUserFromGoogle(
            RegisterUserFromGoogleViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // create claims
            var claims = new List <Claim>()
            {
                new Claim(JwtClaimTypes.Email, model.Email),
                new Claim(JwtClaimTypes.GivenName, model.GivenName),
                new Claim(JwtClaimTypes.FamilyName, model.FamilyName),
                new Claim(JwtClaimTypes.Address, model.Address),
                new Claim("country", model.Country)
            };

            // provision the user
            var user = _localUserService.
                       ProvisionUserFromExternalIdentity(model.UserName, model.Email,
                                                         model.Provider, model.ProviderUserId, claims);

            await _localUserService.SaveChangesAsync();

            //create an activation link
            var link = Url.ActionLink("ActivateUser", "UserRegistration",
                                      new { securityCode = user.SecurityCode });

            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug(link);
            }

            return(View("ActivationCodeSent"));
        }
Exemple #4
0
        private async Task <User> AutoProvisionUser(string provider, string providerUserId, IEnumerable <Claim> claims)
        {
            var user = _localUserService.ProvisionUserFromExternalIdentity(provider, providerUserId, claims.ToList());
            await _localUserService.SaveChangesAsync();

            return(user);
        }
Exemple #5
0
        private async Task <User> AutoProvisionUser(string provider, string providerUserId, IEnumerable <Claim> claims)
        {
            var mappedClaims = new List <Claim>();

            foreach (var claim in claims)
            {
                if (_facebookClaimTypeMap.ContainsKey(claim.Type))
                {
                    mappedClaims.Add(new Claim(_facebookClaimTypeMap[claim.Type], claim.Value));
                }
            }

            //var user = _users.AutoProvisionUser(provider, providerUserId, claims.ToList());
            var user = _localUserService.ProvisionUserFromExternalIdentity(provider, providerUserId, mappedClaims);
            await _localUserService.SaveChangesAsync();

            return(user);
        }
Exemple #6
0
        private async Task <Rekommend.IDP.Entities.User> AutoProvisionUser(string provider, string providerUserId, IEnumerable <Claim> claims)
        {
            var mappedClaims = new List <Claim>();

            // map the claims and ignore those for which no mapping exists
            foreach (var claim in claims)
            {
                if (_facebookClaimTypeMap.ContainsKey(claim.Type))
                {
                    mappedClaims.Add(new Claim(_facebookClaimTypeMap[claim.Type], claim.Value));
                }
            }
            var user = _localUserService.ProvisionUserFromExternalIdentity(provider, providerUserId, mappedClaims);
            await _localUserService.SaveChangesAsync();

            return(user);
        }
Exemple #7
0
        private async Task <Marvin.IDP.Entities.User> AutoProvisionUser(
            string provider, string providerUserId, IEnumerable <Claim> claims)
        {
            var mappedClaims = new List <Claim>();

            foreach (var claim in claims)
            {
                if (_googleClaimTypeMap.ContainsKey(claim.Type))
                {
                    mappedClaims.Add(new Claim(_googleClaimTypeMap[claim.Type], claim.Value));
                }
            }

            var user = _localUserService.ProvisionUserFromExternalIdentity("", "",
                                                                           provider, providerUserId, mappedClaims);

            await _localUserService.SaveChangesAsync();

            return(user);
        }