Пример #1
0
        public bool HasPermission(PermissionNames permission)
        {
            var claimType = PermissionHelpers.CreateClaimType(permission);

            foreach (var claim in this.Claims)
            {
                if (claim.ClaimType == claimType)
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #2
0
 public PermissionRequirement(PermissionNames permission)
 {
     Permission = permission;
     ClaimType  = PermissionHelpers.CreateClaimType(permission);
 }
        async Task ITenantManagementJobs.InitializeNewTenantAsync(TenantInitializeDetails details)
        {
            var finder = new MyDummyTenantFinder(details.DatabaseName, details.TenantId);

            using (var rdb = new TraffkTenantModelDbContext(RdbOptions, finder, new ConfigStringFormatter(finder)
            {
            }))
            {
                try
                {
                    rdb.Database.OpenConnection();
                }
                catch (Exception sex)
                {
                    throw new Exception("Database has not been created yet", sex);
                }
                using (var trans = await rdb.Database.BeginTransactionAsync())
                {
                    var t = await rdb.Tenants.FindAsync(details.TenantId);

                    if (t == null)
                    {
                        t = new Tenant
                        {
                            TenantId   = details.TenantId,
                            TenantName = details.TenantName,
                            TenantType = Tenant.TenantTypes.Normal,
                        };
                        rdb.Tenants.Add(t);
                        rdb.Apps.Add(new App
                        {
                            Tenant  = t,
                            AppType = AppTypes.Portal,
                            AppName = AppTypes.Portal.ToString(),
                        });
                        await rdb.SaveChangesAsync();

                        var r = new ApplicationRole
                        {
                            Tenant         = t,
                            Name           = "Bootstrap",
                            NormalizedName = "bootstrap",
                        };
                        rdb.Roles.Add(r);
                        var u = new ApplicationUser
                        {
                            Tenant             = t,
                            Email              = details.AdminUsername,
                            NormalizedEmail    = details.AdminUsername.ToUpper(),
                            NormalizedUserName = details.AdminUsername.ToUpper(),
                        };
                        rdb.Users.Add(u);
                        await rdb.SaveChangesAsync();

                        u.PasswordHash = PasswordHasher.HashPassword(u, details.AdminPassword);
                        rdb.UserRoles.Add(new ApplicationUserRole
                        {
                            UserId = u.Id,
                            RoleId = r.Id,
                        });
                        foreach (var p in new[] {
                            PermissionNames.ManageJobs,
                            PermissionNames.ManageUsers,
                            PermissionNames.ManageRoles,
                            PermissionNames.ManageTenants,
                            PermissionNames.CustomerRelationshipData,
                            PermissionNames.DirectMessaging,
                            PermissionNames.ReleaseLog,
                        })
                        {
                            rdb.RoleClaims.Add(new RoleClaim
                            {
                                RoleId     = r.Id,
                                ClaimType  = PermissionHelpers.CreateClaimType(p),
                                ClaimValue = new PermissionClaimValue(true).ToJson()
                            });
                        }
                    }
                    await rdb.SaveChangesAsync();

                    trans.Commit();
                }
            }
        }
Пример #4
0
 public ApiRequirement(ApiNames api)
 {
     Api       = api;
     ClaimType = PermissionHelpers.CreateClaimType(api);
 }