Example #1
0
        //public int GetSiteIdByFolderNonAsync(string folderName)
        //{
        //    return siteRepo.GetSiteIdByFolderNonAsync(folderName);
        //}

        public async Task <ISiteSettings> Fetch(Guid siteGuid)
        {
            ISiteSettings site = await siteRepo.Fetch(siteGuid, CancellationToken);

            dataProtector.UnProtect(site);
            return(site);
        }
Example #2
0
        private async Task <ISiteSettings> GetSite()
        {
            if (multiTenantOptions.UseRelatedSitesMode)
            {
                if (multiTenantOptions.Mode == MultiTenantMode.FolderName)
                {
                    CancellationToken cancellationToken
                        = contextAccessor.HttpContext?.RequestAborted ?? CancellationToken.None;

                    site = await siteRepo.Fetch(multiTenantOptions.RelatedSiteId, cancellationToken);

                    return(site);
                }
            }

            TenantContext <SiteSettings> tenantContext
                = await siteResolver.ResolveAsync(contextAccessor.HttpContext);

            if (tenantContext != null && tenantContext.Tenant != null)
            {
                site = tenantContext.Tenant;
            }

            return(site);
        }
Example #3
0
        private async Task <TenantContext <SiteSettings> > ResolveByHostAsync(HttpContext context)
        {
            TenantContext <SiteSettings> tenantContext = null;

            CancellationToken cancellationToken = context?.RequestAborted ?? CancellationToken.None;

            ISiteSettings site
                = await siteRepo.Fetch(context.Request.Host.Value, cancellationToken);

            if (site != null)
            {
                dataProtector.UnProtect(site);

                tenantContext = new TenantContext <SiteSettings>((SiteSettings)site);
            }

            return(tenantContext);
        }
        public override async Task <ClaimsPrincipal> CreateAsync(TUser user)
        {
            // this one was using IdentityOptions.ApplicationCookieAuthenticationScheme
            //ClaimsPrincipal principal = await base.CreateAsync(user);

            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            var userId = await UserManager.GetUserIdAsync(user);

            var userName = await UserManager.GetUserNameAsync(user);

            var id = new ClaimsIdentity(
                tenantResolver.ResolveAuthScheme(AuthenticationScheme.Application),
                Options.ClaimsIdentity.UserNameClaimType,
                Options.ClaimsIdentity.RoleClaimType
                );

            id.AddClaim(new Claim(Options.ClaimsIdentity.UserIdClaimType, userId));
            id.AddClaim(new Claim(Options.ClaimsIdentity.UserNameClaimType, userName));
            if (UserManager.SupportsUserSecurityStamp)
            {
                id.AddClaim(new Claim(Options.ClaimsIdentity.SecurityStampClaimType,
                                      await UserManager.GetSecurityStampAsync(user)));
            }
            if (UserManager.SupportsUserRole)
            {
                var roles = await UserManager.GetRolesAsync(user);

                foreach (var roleName in roles)
                {
                    id.AddClaim(new Claim(Options.ClaimsIdentity.RoleClaimType, roleName));
                    if (RoleManager.SupportsRoleClaims)
                    {
                        var role = await RoleManager.FindByNameAsync(roleName);

                        if (role != null)
                        {
                            id.AddClaims(await RoleManager.GetClaimsAsync(role));
                        }
                    }
                }
            }
            if (UserManager.SupportsUserClaim)
            {
                id.AddClaims(await UserManager.GetClaimsAsync(user));
            }

            ClaimsPrincipal principal = new ClaimsPrincipal(id);


            if (principal.Identity is ClaimsIdentity)
            {
                ClaimsIdentity identity = (ClaimsIdentity)principal.Identity;

                Claim displayNameClaim = new Claim("DisplayName", user.DisplayName);
                if (!identity.HasClaim(displayNameClaim.Type, displayNameClaim.Value))
                {
                    identity.AddClaim(displayNameClaim);
                }
                // this seems pointless to pass in CancellationToken.None
                //ISiteSettings site = await siteRepo.Fetch(user.SiteId, CancellationToken.None);
                ISiteSettings site = await siteRepo.Fetch(user.SiteId, CancellationToken.None);

                if (site != null)
                {
                    Claim siteGuidClaim = new Claim("SiteGuid", site.SiteGuid.ToString());
                    if (!identity.HasClaim(siteGuidClaim.Type, siteGuidClaim.Value))
                    {
                        identity.AddClaim(siteGuidClaim);
                    }
                }


                if (principal.IsInRole("Admins"))
                {
                    if (site != null && site.IsServerAdminSite)
                    {
                        // if the user is an admin of a server admin site
                        // add ServerAdmins role
                        Claim serverAdminRoleClaim = new Claim(ClaimTypes.Role, "ServerAdmins");
                        identity.AddClaim(serverAdminRoleClaim);
                    }
                }
            }

            return(principal);
        }
Example #5
0
 public async Task <ISiteSettings> Fetch(Guid siteGuid)
 {
     return(await siteRepo.Fetch(siteGuid, CancellationToken));
 }
Example #6
0
 public async Task <ISiteSettings> Fetch(Guid siteGuid)
 {
     return(await siteRepo.Fetch(siteGuid));
 }