コード例 #1
0
        public async Task <ActionResult> Create(Permission_Access idata)
        {
            var result = new ApiResultModel <Permission_Access>();
            var data   = await _storage.GetRepository <IPermission_Repository>().CreateAsync(idata);

            if (data != null)
            {
                result.Data = data;
                return(Ok(result));
            }
            else
            {
                result.BadRequest();
                return(BadRequest(result));
            }
        }
コード例 #2
0
        public async Task <ActionResult> Update(int id, Permission_Access idata)
        {
            var result = new ApiResultModel <Permission_Access>();

            if (idata.id != id)
            {
                result.BadRequest("ID mismatch");
                return(BadRequest(result));
            }

            var data = await _storage.GetRepository <IPermission_Repository>().UpdateAsync(idata);

            if (data != null)
            {
                result.Data = data;
                return(Ok(result));
            }
            else
            {
                result.BadRequest();
                return(BadRequest(result));
            }
        }
コード例 #3
0
        public async Task <bool> SetupMudules()
        {
            try
            {
                var perms      = new ClaimPermission().GetPermissions();
                var extensions = new List <IExtension>();

                var all_policy_db = await dbSet.AsNoTracking().ToListAsync();

                var admin_role_db = this.storageContext.Set <User_Role>();
                var admin_codes   = new string[] { "admin", "system", "systemadmin", "system_admin" };
                var admin_roles   = await admin_role_db.AsNoTracking().Where(x => admin_codes.Contains(x.code.ToLower())).ToListAsync();

                if (admin_roles.Count() == 0)
                {
                    admin_roles = new List <User_Role>()
                    {
                        new User_Role()
                        {
                            code = "SYSTEM", name = "System", role_level = 30
                        },
                        new User_Role()
                        {
                            code = "SYSTEM_ADMIN", name = "System admin", role_level = 29
                        },
                        new User_Role()
                        {
                            code = "ADMIN", name = "Administrator", role_level = 28
                        },
                    };
                    await admin_role_db.AddRangeAsync(admin_roles);

                    await storageContext.SaveChangesAsync();
                }

                if (Client.ServerSettings.AssemblyCandidate)
                {
                    string[] starts = new string[] { "ExtCore" };
                    extensions = ExtensionManager.GetInstances <IExtension>().Where(x => !starts.Any(sl => x.Name.StartsWith(sl))).ToList();
                }
                else
                {
                    extensions = ExtensionManager.GetInstances <IExtension>().ToList();
                }

                var permission_context = this.storageContext.Set <Permission_Access>();
                var all_permission_db  = await permission_context.AsNoTracking().ToListAsync();

                all_permission_db.ForEach(x => { x.is_active = false; });

                if (all_permission_db.Count() > 0)
                {
                    return(false);
                }

                //var new_perms = new List<Permission_Access>();
                var new_pols = new List <Policy_Roles>();

                foreach (var perm in perms)
                {
                    var new_perm = new Permission_Access()
                    {
                        name        = perm,
                        is_active   = true,
                        code        = perm,
                        description = perm
                    };
                    await permission_context.AddAsync(new_perm);

                    await storageContext.SaveChangesAsync();

                    foreach (var ext in extensions)
                    {
                        var policy_code = $"{ext.Code}.{perm}";
                        foreach (var role in admin_roles)
                        {
                            new_pols.Add(new Policy_Roles()
                            {
                                role_id       = role.id,
                                permission_id = new_perm.id,
                                code          = policy_code,
                                module_name   = ext.Name,
                                module_code   = ext.Code,
                                User_Role     = null,
                                Permission    = null
                            });
                        }
                    }
                }
                await dbSet.AddRangeAsync(new_pols);

                await storageContext.SaveChangesAsync();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }