Ejemplo n.º 1
0
        private void AddRoles(SkautIsUserPart userPart)
        {
            var  workContext   = this.workContextAccessor.GetContext();
            bool?rolesAssigned = workContext.GetState <bool?>(RolesAssignedCacheKey);

            if (!rolesAssigned.HasValue || !rolesAssigned.Value)
            {
                if (userPart.Has <IUserRoles>())
                {
                    var rolesPart = userPart.As <IUserRoles>();

                    var rolesToAssign = this.GetRolesAssignedByMembership(userPart)
                                        .Union(this.GetRolesAssignedBySkautIsRoles(userPart))
                                        .Distinct()
                                        .ToArray();

                    foreach (var role in rolesToAssign)
                    {
                        if (!rolesPart.Roles.Contains(role))
                        {
                            rolesPart.Roles.Add(role);
                        }
                    }
                }

                // Cache assigned roles
                workContext.SetState(RolesAssignedCacheKey, (bool?)true);
            }
        }