Пример #1
0
        public static IList <SiteUserRole> GetRoles(ApplicationUser applicationUser, string siteId, SiteUserDbModel siteUserDbModel)
        {
            IList <SiteUserRole> roles = new List <SiteUserRole>();

            if (applicationUser != null)
            {
                var userRoles = (SiteUserRole[])Enum.GetValues(typeof(SiteUserRole));
                foreach (var siteUserRole in userRoles)
                {
                    var role = UserSecurity.MapRole(siteId, siteUserRole);
                    if (applicationUser.Roles.Count(c => c == role) > 0)
                    {
                        roles.Add(siteUserRole);
                    }
                }
            }
            if (siteUserDbModel != null && siteUserDbModel.FlaggedRoles != null)
            {
                foreach (var siteUserRole in siteUserDbModel.FlaggedRoles)
                {
                    if (!roles.Contains(siteUserRole))
                    {
                        roles.Add(siteUserRole);
                    }
                }
            }

            return(roles);
        }
Пример #2
0
        public static async Task AttachRolesAsync(UserService userService, SiteUserService siteUserService, string userId)
        {
            var user = await userService.FindApplicationUserByIdAsync(userId);

            var siteUsers = await siteUserService.FindUsersByEmailAsync(user.Email);

            foreach (var siteUserDbModel in siteUsers)
            {
                if (siteUserDbModel.FlaggedRoles != null)
                {
                    foreach (var siteUserRole in siteUserDbModel.FlaggedRoles)
                    {
                        string role = UserSecurity.MapRole(siteUserDbModel.SiteId, siteUserRole);
                        if (user.Roles.Count(c => c == role) <= 0)
                        {
                            user.Roles.Add(role);
                        }
                    }
                }
            }
            await userService.SaveAsync(user);
        }