コード例 #1
0
        internal bool SetUserSso()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(false);
            }

            string email = null;

            foreach (var claim in ((ClaimsPrincipal)User).Claims)
            {
                if (claim.Type == "preferred_username")
                {
                    email = claim.Value;
                    break;
                }
            }

            var user = UserServices.GetUser(email);

            if (user == null)
            {
                user = new UserEntity
                {
                    Email       = email,
                    Name        = email,
                    Surname     = email,
                    AdLogonName = email
                };
                user = UserServices.CreateUser(user);

                if (user != null)
                {
                    UserRoleServices.CreateUserRole(new UserRoleEntity
                    {
                        UserId = user.UserId,
                        RoleId = 3
                    });
                }
            }

            if (user == null)
            {
                return(false);
            }

            var userRoles = GetUserRoles(user.UserId);

            User.AddUpdateClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", user.Email.ToLower());
            User.AddUpdateClaim("sub", user.Email.ToLower());

            foreach (var userRole in userRoles)
            {
                User.AddClaim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", userRole.RoleName);
            }

            var list = ((ClaimsPrincipal)User).Claims.Where(claim => claim.Type.EndsWith("role")).Select(claim =>
            {
                var roleEntity = new RoleEntity
                {
                    RoleId          = 1,
                    Name            = claim.Value,
                    ApplicationId   = WebConfigHelper.ApplicationIdCed,
                    ApplicationName = "ITE.CED"
                };
                return(roleEntity);
            }).ToList();

            CurrentCedUser = new CedUser(user, list);
            CurrentCedUser.IsPrimaryDirector   = EventDirectorServices.IsPrimaryDirector(CurrentCedUser.CurrentUser.Email, null, WebConfigHelper.ApplicationIdCed);
            CurrentCedUser.IsAssistantDirector = EventDirectorServices.IsAssistantDirector(CurrentCedUser.CurrentUser.Email, null, WebConfigHelper.ApplicationIdCed);

            return(true);
        }