Ejemplo n.º 1
0
        public async Task <IActionResult> Register([FromBody] RegisterRequestViewModel model)
        {
            //var aVal = 0; var blowUp = 1 / aVal;

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new HollywoodBetTestUser {
                UserName = model.Email, Email = model.Email
            };

            var result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("userName", user.UserName));

            //await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("name", user.Name));
            await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("email", user.Email));

            await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("role", model.Role));

            return(Ok(user));
        }
Ejemplo n.º 2
0
        private static void AddUserToRole(HollywoodBetTestUser user, UserManager <HollywoodBetTestUser> userMgr, RoleManager <IdentityRole> roleMgr)
        {
            IdentityResult result     = null;
            bool           roleExists = false;

            switch (user.UserName.ToLower())
            {
            case "alice":
                roleExists = roleMgr.RoleExistsAsync("CUSTOMER").Result;
                if (roleExists)
                {
                    result = userMgr.AddToRoleAsync(user, HollywoodBetTest.Models.Roles.Customer).Result;
                }
                break;

            case "bob":
                roleExists = roleMgr.RoleExistsAsync("MANAGER").Result;
                if (roleExists)
                {
                    result = userMgr.AddToRoleAsync(user, HollywoodBetTest.Models.Roles.Manager).Result;
                }
                break;

            case "admin":
                roleExists = roleMgr.RoleExistsAsync("ADMIN").Result;
                if (roleExists)
                {
                    result = userMgr.AddToRoleAsync(user, HollywoodBetTest.Models.Roles.Admin).Result;
                }
                break;

            default:
                break;
            }

            if (result.Succeeded)
            {
                Log.Debug($"{user.UserName} added to role");
            }
            else
            {
                Log.Error($"Addding {user.UserName} to role failed. {result.Errors.FirstOrDefault().Description}");
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> OnPostAsync(LocalRegisterModel data)
        {
            if (ModelState.IsValid)
            {
                var user = new HollywoodBetTestUser {
                    UserName = data.Email
                };

                if (ModelState.IsValid)
                {
                    var result = await _userManager.CreateAsync(user);

                    if (result.Succeeded)
                    {
                    }
                }
            }
            return(Ok());
        }
Ejemplo n.º 4
0
        private async Task <HollywoodBetTestUser> AutoProvisionUserAsync(string provider, string providerUserId, IEnumerable <Claim> claims)
        {
            // create a list of claims that we want to transfer into our store
            var filtered = new List <Claim>();

            // user's display name
            var name = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Name)?.Value ??
                       claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value;

            if (name != null)
            {
                filtered.Add(new Claim(JwtClaimTypes.Name, name));
            }
            else
            {
                var first = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.GivenName)?.Value ??
                            claims.FirstOrDefault(x => x.Type == ClaimTypes.GivenName)?.Value;
                var last = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.FamilyName)?.Value ??
                           claims.FirstOrDefault(x => x.Type == ClaimTypes.Surname)?.Value;
                if (first != null && last != null)
                {
                    filtered.Add(new Claim(JwtClaimTypes.Name, first + " " + last));
                }
                else if (first != null)
                {
                    filtered.Add(new Claim(JwtClaimTypes.Name, first));
                }
                else if (last != null)
                {
                    filtered.Add(new Claim(JwtClaimTypes.Name, last));
                }
            }

            // email
            var email = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Email)?.Value ??
                        claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value;

            if (email != null)
            {
                filtered.Add(new Claim(JwtClaimTypes.Email, email));
            }

            var user = new HollywoodBetTestUser
            {
                UserName = Guid.NewGuid().ToString(),
            };
            var identityResult = await _userManager.CreateAsync(user);

            if (!identityResult.Succeeded)
            {
                throw new Exception(identityResult.Errors.First().Description);
            }

            if (filtered.Any())
            {
                identityResult = await _userManager.AddClaimsAsync(user, filtered);

                if (!identityResult.Succeeded)
                {
                    throw new Exception(identityResult.Errors.First().Description);
                }
            }

            identityResult = await _userManager.AddLoginAsync(user, new UserLoginInfo(provider, providerUserId, provider));

            if (!identityResult.Succeeded)
            {
                throw new Exception(identityResult.Errors.First().Description);
            }

            return(user);
        }