/// <summary>
        /// 保存新建
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static bool Save(User user)
        {
            if (!UserChecker(user))
            {
                return(false);
            }

            // 已经存在或者已经在新用户中了
            if (string.IsNullOrEmpty(user.Id) && (RetrieveUserByUserName(user.UserName) != null || RetrieveNewUsers().Any(u => u.UserName == user.UserName)))
            {
                return(false);
            }

            if (DictHelper.RetrieveSystemModel() && !string.IsNullOrEmpty(user.Id) && RetrieveConstUsers().Any(u => u.Id == user.Id))
            {
                return(true);
            }

            var ret = DbContextManager.Create <User>()?.Save(user) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: string.IsNullOrEmpty(user.Id) ? new List <string>() : new List <string>()
                {
                    user.Id
                }, cacheKey: $"{RetrieveUsersByNameDataKey}-{user.UserName}");
            }
            return(ret);
        }
        /// <summary>
        /// 通过角色ID保存当前授权用户(插入)
        /// </summary>
        /// <param name="roleId">角色ID</param>
        /// <param name="userIds">用户ID数组</param>
        /// <returns></returns>
        public static bool SaveByRoleId(string roleId, IEnumerable <string> userIds)
        {
            // 演示模式时禁止修改 Admin 对 Administrators 角色的移除操作
            if (DictHelper.RetrieveSystemModel())
            {
                var adminRole = RoleHelper.Retrieves().FirstOrDefault(r => r.RoleName.Equals("Administrators", StringComparison.OrdinalIgnoreCase))?.Id;
                if (!string.IsNullOrEmpty(adminRole) && roleId.Equals(adminRole, StringComparison.OrdinalIgnoreCase))
                {
                    var adminId = Retrieves().FirstOrDefault(u => u.UserName.Equals("Admin", StringComparison.OrdinalIgnoreCase))?.Id;
                    if (!string.IsNullOrEmpty(adminId))
                    {
                        userIds = userIds.Union(new string[] { adminId });
                    }
                }
            }

            var ret = DbContextManager.Create <User>()?.SaveByRoleId(roleId, userIds) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: userIds, roleIds: new List <string>()
                {
                    roleId
                });
            }
            return(ret);
        }
        /// <summary>
        /// 刪除選單
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool Delete(IEnumerable <string> value)
        {
            if (DictHelper.RetrieveSystemModel())
            {
                // 不允許刪除系統選單與前台演示系統的預設選單
                var systemMenus = RetrieveAllMenus("Admin").Where(m => m.Category == "0");
                value = value.Where(v => !systemMenus.Any(m => m.Id == v));
                if (!value.Any())
                {
                    return(true);
                }

                // 演示系統
                var appMenus = BootstrapAppContext.Configuration.GetSection("AppMenus").Get <ICollection <string> >();
                var appIds   = RetrieveAllMenus("Admin").Where(m => appMenus.Any(app => m.Name.Equals(app, System.StringComparison.OrdinalIgnoreCase))).Select(m => m.Id);
#pragma warning disable CS8602 // 取消引用可能出现的空引用。
                value = value.Where(m => !appIds.Any(app => app.Equals(m, StringComparison.OrdinalIgnoreCase)));
#pragma warning restore CS8602 // 取消引用可能出现的空引用。
                if (!value.Any())
                {
                    return(true);
                }
            }
            var ret = DbContextManager.Create <Menu>()?.Delete(value) ?? false;
            if (ret)
            {
                CacheCleanUtility.ClearCache(menuIds: value);
            }
            return(ret);
        }
Exemple #4
0
        /// <summary>
        /// 保存用户角色關係
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public static bool SaveByUserId(string userId, IEnumerable <string> roleIds)
        {
            // 演示模式時禁止修改 Admin 对 Administrators 角色的移除操作
            var ret = false;

            if (DictHelper.RetrieveSystemModel())
            {
                var users   = new string[] { "Admin", "User" };
                var userIds = UserHelper.Retrieves().Where(u => users.Any(usr => usr.Equals(u.UserName, StringComparison.OrdinalIgnoreCase))).Select(u => u.Id);
                if (userIds.Any(u => (u ?? string.Empty).Equals(userId, StringComparison.OrdinalIgnoreCase)))
                {
                    ret = true;
                }
            }
            if (ret)
            {
                return(ret);
            }

            ret = DbContextManager.Create <Role>()?.SaveByUserId(userId, roleIds) ?? false;
            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: new List <string>()
                {
                    userId
                }, roleIds: roleIds);
            }
            return(ret);
        }
        /// <summary>
        /// 删除菜单
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool Delete(IEnumerable <string> value)
        {
            if (DictHelper.RetrieveSystemModel())
            {
                // 不允许删除系统菜单与前台演示系统的默认菜单
                var systemMenus = RetrieveAllMenus("Admin").Where(m => m.Category == "0");
                value = value.Where(v => !systemMenus.Any(m => m.Id == v));
                if (!value.Any())
                {
                    return(true);
                }

                // 演示系统
                var appMenus = ConfigurationManager.GetSection("AppMenus").Get <ICollection <string> >();
                var appIds   = RetrieveAllMenus("Admin").Where(m => appMenus.Any(app => m.Name.Equals(app, System.StringComparison.OrdinalIgnoreCase))).Select(m => m.Id);
                value = value.Where(m => !appIds.Any(app => app.Equals(m, System.StringComparison.OrdinalIgnoreCase)));
                if (!value.Any())
                {
                    return(true);
                }
            }
            var ret = DbContextManager.Create <Menu>().Delete(value);

            if (ret)
            {
                CacheCleanUtility.ClearCache(menuIds: value);
            }
            return(ret);
        }
        /// <summary>
        /// 保存用户到数据库中
        /// </summary>
        /// <param name="newUser"></param>
        /// <param name="roles"></param>
        internal static void SaveUser(User newUser, IEnumerable <string> roles)
        {
            if (string.IsNullOrEmpty(newUser.Id))
            {
                var uid  = UserHelper.Retrieves().FirstOrDefault(u => u.UserName == newUser.UserName)?.Id;
                var user = DbContextManager.Create <User>();
                if (user != null)
                {
                    if (!string.IsNullOrEmpty(uid))
                    {
                        user.Delete(new string[] { uid });
                    }
                    if (user.Save(newUser))
                    {
                        // 根据配置文件设置默认角色
                        var role = DbContextManager.Create <Role>();
                        if (role != null)
                        {
                            var roleIds = role.Retrieves().Where(r => roles.Any(rl => rl.Equals(r.RoleName, StringComparison.OrdinalIgnoreCase))).Select(r => r.Id);
                            if (roleIds.Any())
                            {
#nullable disable
                                role.SaveByUserId(newUser.Id, roleIds);
#nullable restore
                                CacheCleanUtility.ClearCache(userIds: new string[0], roleIds: new string[0], cacheKey: $"{UserHelper.RetrieveUsersByNameDataKey}-{newUser.UserName}");
                            }
                        }
                    }
                }
Exemple #7
0
        /// <summary>
        /// 删除群组信息
        /// </summary>
        /// <param name="values"></param>
        public static bool Delete(IEnumerable <string> values)
        {
            var ret = DbContextManager.Create <Group>()?.Delete(values) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(groupIds: values);
            }
            return(ret);
        }
        /// <summary>
        /// 根据用户名修改用户头像
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="iconName"></param>
        /// <returns></returns>
        public static bool SaveUserIconByName(string userName, string iconName)
        {
            var ret = DbContextManager.Create <User>()?.SaveUserIconByName(userName, iconName) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(cacheKey: $"{RetrieveUsersByNameDataKey}*");
            }
            return(ret);
        }
        /// <summary>
        /// 根据用户名更改用户皮肤
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="cssName"></param>
        /// <returns></returns>
        public static bool SaveUserCssByName(string userName, string cssName)
        {
            var ret = DbContextManager.Create <User>().SaveUserCssByName(userName, cssName);

            if (ret)
            {
                CacheCleanUtility.ClearCache(cacheKey: $"{RetrieveUsersByNameDataKey}*");
            }
            return(ret);
        }
Exemple #10
0
        /// <summary>
        /// 保存网站个性化设置
        /// </summary>
        /// <param name="dicts"></param>
        /// <returns></returns>
        public static bool SaveSettings(IEnumerable <BootstrapDict> dicts)
        {
            var ret = DbContextManager.Create <Dict>()?.SaveSettings(dicts) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(dictIds: new List <string>());
            }
            return(ret);
        }
        /// <summary>
        /// 保存网站个性化设置
        /// </summary>
        /// <param name="dict"></param>
        /// <returns></returns>
        public static bool SaveSettings(BootstrapDict dict)
        {
            var ret = DbContextManager.Create <Dict>().SaveSettings(dict);

            if (ret)
            {
                CacheCleanUtility.ClearCache(dictIds: new List <string>());
            }
            return(ret);
        }
Exemple #12
0
        /// <summary>
        /// 忘记密码调用
        /// </summary>
        /// <param name="user"></param>
        public static bool ForgotPassword(ResetUser user)
        {
            var ret = DbContextManager.Create <User>().ForgotPassword(user);

            if (ret)
            {
                CacheCleanUtility.ClearCache(cacheKey: RetrieveUsersDataKey);
            }
            return(ret);
        }
Exemple #13
0
        /// <summary>
        /// 保存用户部门关系
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="groupIds"></param>
        /// <returns></returns>
        public static bool SaveByUserId(string userId, IEnumerable <string> groupIds)
        {
            var ret = DbContextManager.Create <Group>()?.SaveByUserId(userId, groupIds) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(groupIds: groupIds, userIds: new List <string>()
                {
                    userId
                });
            }
            return(ret);
        }
Exemple #14
0
        /// <summary>
        /// 保存新建/更新的群组信息
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Save(Group p)
        {
            var ret = DbContextManager.Create <Group>()?.Save(p) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(groupIds: string.IsNullOrEmpty(p.Id) ? new List <string>() : new List <string>()
                {
                    p.Id
                });
            }
            return(ret);
        }
        /// <summary>
        /// 通过指定菜单ID保存角色
        /// </summary>
        /// <param name="menuId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public static bool SavaByMenuId(string menuId, IEnumerable <string> roleIds)
        {
            var ret = DbContextManager.Create <Role>().SavaByMenuId(menuId, roleIds);

            if (ret)
            {
                CacheCleanUtility.ClearCache(roleIds: roleIds, menuIds: new List <string>()
                {
                    menuId
                });
            }
            return(ret);
        }
Exemple #16
0
        /// <summary>
        /// 根据角色ID以及选定的App ID,保到角色应用表
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="appIds"></param>
        /// <returns></returns>
        public static bool SaveByRoleId(string roleId, IEnumerable <string> appIds)
        {
            var ret = DbContextManager.Create <App>().SaveByRoleId(roleId, appIds);

            if (ret)
            {
                CacheCleanUtility.ClearCache(appIds: appIds, roleIds: new List <string>()
                {
                    roleId
                });
            }
            return(ret);
        }
Exemple #17
0
        /// <summary>
        /// 保存用户角色关系
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public static bool SaveByUserId(string userId, IEnumerable <string> roleIds)
        {
            var ret = DbContextManager.Create <Role>().SaveByUserId(userId, roleIds);

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: new List <string>()
                {
                    userId
                }, roleIds: roleIds);
            }
            return(ret);
        }
Exemple #18
0
        /// <summary>
        /// 根據GroupId更新Roles訊息,刪除旧的Roles訊息,插入新的Roles訊息
        /// </summary>
        /// <param name="groupId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public static bool SaveByGroupId(string groupId, IEnumerable <string> roleIds)
        {
            var ret = DbContextManager.Create <Role>()?.SaveByGroupId(groupId, roleIds) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(roleIds: roleIds, groupIds: new List <string>()
                {
                    groupId
                });
            }
            return(ret);
        }
        /// <summary>
        /// 保存指定角色的所有選單
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="menuIds"></param>
        /// <returns></returns>
        public static bool SaveMenusByRoleId(string roleId, IEnumerable <string> menuIds)
        {
            var ret = DbContextManager.Create <Menu>()?.SaveMenusByRoleId(roleId, menuIds) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(menuIds: menuIds, roleIds: new List <string>()
                {
                    roleId
                });
            }
            return(ret);
        }
Exemple #20
0
        /// <summary>
        /// 通过部门ID保存当前授权用户(插入)
        /// </summary>
        /// <param name="groupId">GroupID</param>
        /// <param name="userIds">用户ID数组</param>
        /// <returns></returns>
        public static bool SaveByGroupId(string groupId, IEnumerable <string> userIds)
        {
            var ret = DbContextManager.Create <User>().SaveByGroupId(groupId, userIds);

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: userIds, groupIds: new List <string>()
                {
                    groupId
                });
            }
            return(ret);
        }
Exemple #21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="rejectBy"></param>
        /// <returns></returns>
        public static bool Reject(string id, string rejectBy)
        {
            var ret = DbContextManager.Create <User>().Reject(id, rejectBy);

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: new List <string>()
                {
                    id
                });
            }
            return(ret);
        }
Exemple #22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="approvedBy"></param>
        /// <returns></returns>
        public static bool Approve(string id, string approvedBy)
        {
            var ret = DbContextManager.Create <User>().Approve(id, approvedBy);

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: new List <string>()
                {
                    id
                });
            }
            return(ret);
        }
Exemple #23
0
        /// <summary>
        /// 保存新建/更新的字典信息
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Save(BootstrapDict p)
        {
            if (RetrieveSystemModel() && !string.IsNullOrEmpty(p.Id) && RetrieveProtectedDicts().Any(m => m.Id == p.Id))
            {
                return(true);
            }

            var ret = DbContextManager.Create <Dict>()?.Save(p) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(dictIds: new List <string>());
            }
            return(ret);
        }
Exemple #24
0
        /// <summary>
        /// 保存用户到数据库中
        /// </summary>
        /// <param name="newUser"></param>
        /// <param name="roles"></param>
        internal static void SaveUser(User newUser, IEnumerable <string> roles)
        {
            var uid = UserHelper.Retrieves().FirstOrDefault(u => u.UserName == newUser.UserName)?.Id;

            if (uid != null)
            {
                DbContextManager.Create <User>().Delete(new string[] { uid });
            }
            DbContextManager.Create <User>().Save(newUser);

            // 根据配置文件设置默认角色
            var roleIds = DbContextManager.Create <Role>().Retrieves().Where(r => roles.Any(rl => rl.Equals(r.RoleName, StringComparison.OrdinalIgnoreCase))).Select(r => r.Id);

            DbContextManager.Create <Role>().SaveByUserId(newUser.Id, roleIds);
            CacheCleanUtility.ClearCache(userIds: new string[0], roleIds: new string[0], cacheKey: $"{UserHelper.RetrieveUsersByNameDataKey}-{newUser.UserName}");
        }
Exemple #25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="displayName"></param>
        /// <returns></returns>
        public static bool SaveDisplayName(string userName, string displayName)
        {
            if (!UserChecker(new User {
                UserName = userName, DisplayName = displayName
            }))
            {
                return(false);
            }
            var ret = DbContextManager.Create <User>().SaveDisplayName(userName, displayName);

            if (ret)
            {
                CacheCleanUtility.ClearCache(cacheKey: $"{RetrieveUsersByNameDataKey}*");
            }
            return(ret);
        }
        /// <summary>
        /// 删除字典中的数据
        /// </summary>
        /// <param name="value">需要删除的IDs</param>
        /// <returns></returns>
        public static bool Delete(IEnumerable <string> value)
        {
            if (!value.Any())
            {
                return(true);
            }

            // 禁止删除系统数据与测试平台数据
            if (RetrieveSystemModel() && RetrieveProtectedDicts().Any(d => value.Any(v => v == d.Id)))
            {
                return(true);
            }
            var ret = DbContextManager.Create <Dict>().Delete(value);

            CacheCleanUtility.ClearCache(dictIds: value);
            return(ret);
        }
Exemple #27
0
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="value"></param>
        public static bool Delete(IEnumerable <string> value)
        {
            var admins = RetrieveConstUsers();

            value = value.Where(v => !admins.Any(u => u.Id == v));
            if (!value.Any())
            {
                return(true);
            }
            var ret = DbContextManager.Create <User>().Delete(value);

            if (ret)
            {
                CacheCleanUtility.ClearCache(userIds: value);
            }
            return(ret);
        }
Exemple #28
0
        /// <summary>
        /// 删除角色表
        /// </summary>
        /// <param name="value"></param>
        public static bool Delete(IEnumerable <string> value)
        {
            var roles = new string[] { "Administrators", "Default" };
            var rs    = Retrieves().Where(r => roles.Any(rl => rl.Equals(r.RoleName, StringComparison.OrdinalIgnoreCase)));

            value = value.Where(v => !rs.Any(r => r.Id == v));
            if (!value.Any())
            {
                return(true);
            }
            var ret = DbContextManager.Create <Role>().Delete(value);

            if (ret)
            {
                CacheCleanUtility.ClearCache(roleIds: value);
            }
            return(ret);
        }
        /// <summary>
        /// 保存選單
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Save(BootstrapMenu p)
        {
            // 不允許保存系統選單與前台演示系統的預設選單
            if (DictHelper.RetrieveSystemModel())
            {
                if (p.Category == "0")
                {
                    return(true);
                }

                // 查找原有資料比对是否為系統選單與演示選單
                if (!string.IsNullOrEmpty(p.Id))
                {
                    // 系統選單
                    var menus = RetrieveAllMenus("Admin");
#pragma warning disable CS8602 // 取消引用可能出现的空引用。
                    var menu = menus.FirstOrDefault(m => m.Id.Equals(p.Id, System.StringComparison.OrdinalIgnoreCase));
#pragma warning restore CS8602 // 取消引用可能出现的空引用。
                    if (menu != null && menu.Category == "0")
                    {
                        return(true);
                    }

                    // 演示系統
                    var appMenus = BootstrapAppContext.Configuration.GetSection("AppMenus").Get <ICollection <string> >();
                    if (appMenus.Any(m => m.Equals(menu?.Name, StringComparison.OrdinalIgnoreCase)))
                    {
                        return(true);
                    }
                }
            }

            var ret = DbContextManager.Create <Menu>()?.Save(p) ?? false;
            if (ret)
            {
                CacheCleanUtility.ClearCache(menuIds: string.IsNullOrEmpty(p.Id) ? new List <string>() : new List <string>()
                {
                    p.Id
                });
            }
            return(ret);
        }
Exemple #30
0
        /// <summary>
        /// 保存新建/更新的角色訊息
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Save(Role p)
        {
            // 内置两個角色禁止修改
            var roles = Retrieves().Where(r => new string[] { "Administrators", "Default" }.Any(s => s.Equals(r.RoleName, StringComparison.OrdinalIgnoreCase))).Select(r => r.Id ?? "");

            if (!string.IsNullOrEmpty(p.Id) && roles.Any(r => r.Equals(p.Id, StringComparison.OrdinalIgnoreCase)))
            {
                return(true);
            }

            var ret = DbContextManager.Create <Role>()?.Save(p) ?? false;

            if (ret)
            {
                CacheCleanUtility.ClearCache(roleIds: string.IsNullOrEmpty(p.Id) ? new List <string>() : new List <string> {
                    p.Id
                });
            }
            return(ret);
        }