diff --git a/blorum.sql b/blorum.sql index 6024646..a70de0b 100644 --- a/blorum.sql +++ b/blorum.sql @@ -35,7 +35,7 @@ CREATE TABLE `articles` ( -- INSERT INTO `articles` (`aid`, `uid`, `title`, `content`, `excerpt`, `tags`, `category`, `status`, `history`, `statistics`, `slug`) VALUES -(0, 0, '_blorum_root', '', '', '', '', '{}', '{}', '{}', NULL); +(0, 0, '__blorum_root', '', '', '', '', '{}', '{}', '{}', NULL); -- -------------------------------------------------------- @@ -47,6 +47,7 @@ CREATE TABLE `categories` ( `cid` int UNSIGNED NOT NULL, `type` tinyint NOT NULL, `name` varchar(64) NOT NULL, + `icon` varchar(128) NOT NULL, `parent` text NOT NULL, `children` text NOT NULL, `statistics` json NOT NULL @@ -57,7 +58,19 @@ CREATE TABLE `categories` ( -- INSERT INTO `categories` (`cid`, `type`, `name`, `parent`, `children`, `statistics`) VALUES -(1, 0, '_blorum_root', '', '', '{}'); +(0, 0, '__blorum_root', '', '', '{}'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tags` +-- + +CREATE TABLE `tags` ( + `name` varchar(64) NOT NULL, + `icon` varchar(128) NOT NULL, + `statistics` json NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- @@ -213,7 +226,7 @@ CREATE TABLE `forum` ( `root_categories` text NOT NULL, `pin` json NOT NULL, `statistics` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- @@ -257,7 +270,7 @@ CREATE TABLE `notes` ( `uid` int UNSIGNED NOT NULL, `content` tinytext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `history` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -- Dumping data for table `notes` @@ -284,7 +297,7 @@ CREATE TABLE `posts` ( `statistics` json NOT NULL, `history` json NOT NULL, `status` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -- Dumping data for table `posts` @@ -376,7 +389,7 @@ CREATE TABLE `rv_comments_p` ( `children` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `type` tinyint NOT NULL, `history` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- @@ -392,7 +405,7 @@ CREATE TABLE `rv_comments_u` ( `content` json NOT NULL, `type` tinyint NOT NULL, `history` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- @@ -410,7 +423,7 @@ CREATE TABLE `rv_posts` ( `is_conversation` tinyint(1) NOT NULL DEFAULT '0', `viewer` json DEFAULT NULL, `history` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- @@ -421,18 +434,7 @@ CREATE TABLE `rv_posts` ( CREATE TABLE `statistics` ( `name` varchar(64) NOT NULL, `value` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- -------------------------------------------------------- - --- --- Table structure for table `tags` --- - -CREATE TABLE `tags` ( - `name` varchar(64) NOT NULL, - `statistics` json NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +) ENGINE=InnoDB DEFAULT CHARSET=uft8mb4; -- -------------------------------------------------------- diff --git a/config.json b/config.json index f46afc8..f9c5138 100644 --- a/config.json +++ b/config.json @@ -22,5 +22,19 @@ "port": 6379, "password": "REDIS_PASSWORD" } + }, + "builtin_cache": { + "enabled": true, + "parameters": { + "circumstance_1": { + + }, + "circumstance_2": { + + }, + "circumstance_3": { + + } + } } } \ No newline at end of file diff --git a/modules/utils.mjs b/modules/utils.mjs index 5158be9..ee8a9c9 100644 --- a/modules/utils.mjs +++ b/modules/utils.mjs @@ -357,164 +357,7 @@ function getPermissionSum(arr) { } } }; - let sets = { - "flag": new Set(), - "user_permission_read_allow": new Set(), - "user_role_read_allow": new Set(), - "role_read_allow": new Set(), - "role_grant_allow": new Set(), - "role_remove_allow": new Set(), - "article_read_category_allow": new Set(), - "article_read_tag_allow": new Set(), - "article_create_category_allow": new Set(), - "article_create_tag_allow": new Set(), - "forum_default_read_category_allow": new Set(), - "forum_default_read_tag_allow": new Set(), - "comment_post_tag_allow": new Set(), - "comment_post_category_allow": new Set() - - }; - let isRateLimitContained = false; - var arrLen = arr.length; - //The following part is generated to ensure the best performance, do not "optimize" it - for (var i = 0; i < arrLen; i++) { - let perm = arr[i]; - if (perm.with_rate_limit === 1) { - isRateLimitContained = true; - } - //Flag processing - let flagLen = perm.permissions.flags.length; - for (var j = 0; j < flagLen; j++) { - sets.flag.add(perm.permissions.flags[j]); - } - let user_permission_read_allowLen = perm.permissions.user.permission.read.allow.length; - for (var j = 0; j < user_permission_read_allowLen; j++) { - sets.user_permission_read_allow.add(perm.permissions.user.permission.read.allow[j]); - } - let user_role_read_allowLen = perm.permissions.user.role.read.allow.length; - for (var j = 0; j < user_role_read_allowLen; j++) { - sets.user_role_read_allow.add(perm.permissions.user.role.read.allow[j]); - } - let role_read_allowLen = perm.permissions.role.read.allow.length; - for (var j = 0; j < role_read_allowLen; j++) { - sets.role_read_allow.add(perm.permissions.role.read.allow[j]); - } - let role_grant_allowLen = perm.permissions.role.grant.allow.length; - for (var j = 0; j < role_grant_allowLen; j++) { - sets.role_grant_allow.add(perm.permissions.role.grant.allow[j]); - } - let role_remove_allowLen = perm.permissions.role.remove.allow.length; - for (var j = 0; j < role_remove_allowLen; j++) { - sets.role_remove_allow.add(perm.permissions.role.remove.allow[j]); - } - let article_read_category_allowLen = perm.permissions.article.read.category.allow.length; - for (var j = 0; j < article_read_category_allowLen; j++) { - sets.article_read_category_allow.add(perm.permissions.article.read.category.allow[j]); - } - let article_read_tag_allowLen = perm.permissions.article.read.tag.allow.length; - for (var j = 0; j < article_read_tag_allowLen; j++) { - sets.article_read_tag_allow.add(perm.permissions.article.read.tag.allow[j]); - } - let article_create_category_allowLen = perm.permissions.article.create.category.allow.length; - for (var j = 0; j < article_create_category_allowLen; j++) { - sets.article_create_category_allow.add(perm.permissions.article.create.category.allow[j]); - } - let article_create_tag_allowLen = perm.permissions.article.create.tag.allow.length; - for (var j = 0; j < article_create_tag_allowLen; j++) { - sets.article_create_tag_allow.add(perm.permissions.article.create.tag.allow[j]); - } - let forum_default_read_category_allowLen = perm.permissions.forum.default.read.category.allow.length; - for (var j = 0; j < forum_default_read_category_allowLen; j++) { - sets.forum_default_read_category_allow.add(perm.permissions.forum.default.read.category.allow[j]); - } - let forum_default_read_tag_allowLen = perm.permissions.forum.default.read.tag.allow.length; - for (var j = 0; j < forum_default_read_tag_allowLen; j++) { - sets.forum_default_read_tag_allow.add(perm.permissions.forum.default.read.tag.allow[j]); - } - let comment_post_tag_allowLen = perm.permissions.comment.post.tag.allow.length; - for (var j = 0; j < comment_post_tag_allowLen; j++) { - sets.comment_post_tag_allow.add(perm.permissions.comment.post.tag.allow[j]); - } - let comment_post_category_allowLen = perm.permissions.comment.post.category.allow.length; - for (var j = 0; j < comment_post_category_allowLen; j++) { - sets.comment_post_category_allow.add(perm.permissions.comment.post.category.allow[j]); - } - permSum.permissions.flags = Array.from(sets.flag); - permSum.permissions.user.permission.read.allow = Array.from(sets.user_permission_read_allow); - permSum.permissions.user.role.read.allow = Array.from(sets.user_role_read_allow); - permSum.permissions.role.read.allow = Array.from(sets.role_read_allow); - permSum.permissions.role.grant.allow = Array.from(sets.role_grant_allow); - permSum.permissions.role.remove.allow = Array.from(sets.role_remove_allow); - permSum.permissions.article.read.category.allow = Array.from(sets.article_read_category_allow); - permSum.permissions.article.read.tag.allow = Array.from(sets.article_read_tag_allow); - permSum.permissions.article.create.category.allow = Array.from(sets.article_create_category_allow); - permSum.permissions.article.create.tag.allow = Array.from(sets.article_create_tag_allow); - permSum.permissions.forum.default.read.category.allow = Array.from(sets.forum_default_read_category_allow); - permSum.permissions.forum.default.read.tag.allow = Array.from(sets.forum_default_read_tag_allow); - permSum.permissions.comment.post.tag.allow = Array.from(sets.comment_post_tag_allow); - permSum.permissions.comment.post.category.allow = Array.from(sets.comment_post_category_allow); - - - //Value processing - if(perm.permissions.max_session > permSum.permissions.max_session) permSum.permissions.max_session = perm.permissions.max_session; - if(perm.permissions.cookie_expire_after > permSum.permissions.cookie_expire_after) permSum.permissions.cookie_expire_after = perm.permissions.cookie_expire_after; - if(perm.permissions.user.permission.read.default > permSum.permissions.user.permission.read.default) permSum.permissions.user.permission.read.default = perm.permissions.user.permission.read.default; - if(perm.permissions.user.role.read.default > permSum.permissions.user.role.read.default) permSum.permissions.user.role.read.default = perm.permissions.user.role.read.default; - if(perm.permissions.role.read.default > permSum.permissions.role.read.default) permSum.permissions.role.read.default = perm.permissions.role.read.default; - if(perm.permissions.role.grant.level > permSum.permissions.role.grant.level) permSum.permissions.role.grant.level = perm.permissions.role.grant.level; - if(perm.permissions.role.remove.level > permSum.permissions.role.remove.level) permSum.permissions.role.remove.level = perm.permissions.role.remove.level; - if(perm.permissions.article.read.default > permSum.permissions.article.read.default) permSum.permissions.article.read.default = perm.permissions.article.read.default; - if(perm.permissions.article.create.default > permSum.permissions.article.create.default) permSum.permissions.article.create.default = perm.permissions.article.create.default; - if(perm.permissions.comment.user.default > permSum.permissions.comment.user.default) permSum.permissions.comment.user.default = perm.permissions.comment.user.default; - if(perm.permissions.comment.article.default > permSum.permissions.comment.article.default) permSum.permissions.comment.article.default = perm.permissions.comment.article.default; - if(perm.permissions.tag.create > permSum.permissions.tag.create) permSum.permissions.tag.create = perm.permissions.tag.create; - if(perm.permissions.tag.remove > permSum.permissions.tag.remove) permSum.permissions.tag.remove = perm.permissions.tag.remove; - if(perm.permissions.tag.add.article > permSum.permissions.tag.add.article) permSum.permissions.tag.add.article = perm.permissions.tag.add.article; - if(perm.permissions.tag.add.post > permSum.permissions.tag.add.post) permSum.permissions.tag.add.post = perm.permissions.tag.add.post; - if(perm.permissions.report.create > permSum.permissions.report.create) permSum.permissions.report.create = perm.permissions.report.create; - if(perm.permissions.log.read > permSum.permissions.log.read) permSum.permissions.log.read = perm.permissions.log.read; - } - if(isRateLimitContained) { - permSum.with_rate_limit = 1; - for (var i = 0; i < arrLen; i++) { - let perm = arr[i]; - if(perm.rate_limits.login > permSum.rate_limits.login) permSum.rate_limits.login = perm.rate_limits.login; - if(perm.rate_limits.invite > permSum.rate_limits.invite) permSum.rate_limits.invite = perm.rate_limits.invite; - if(perm.rate_limits.report > permSum.rate_limits.report) permSum.rate_limits.report = perm.rate_limits.report; - if(perm.rate_limits.edit.post.self > permSum.rate_limits.edit.post.self) permSum.rate_limits.edit.post.self = perm.rate_limits.edit.post.self; - if(perm.rate_limits.edit.post.tag > permSum.rate_limits.edit.post.tag) permSum.rate_limits.edit.post.tag = perm.rate_limits.edit.post.tag; - if(perm.rate_limits.edit.post.category > permSum.rate_limits.edit.post.category) permSum.rate_limits.edit.post.category = perm.rate_limits.edit.post.category; - if(perm.rate_limits.edit.post.forum > permSum.rate_limits.edit.post.forum) permSum.rate_limits.edit.post.forum = perm.rate_limits.edit.post.forum; - if(perm.rate_limits.edit.article.self > permSum.rate_limits.edit.article.self) permSum.rate_limits.edit.article.self = perm.rate_limits.edit.article.self; - if(perm.rate_limits.edit.article.tag > permSum.rate_limits.edit.article.tag) permSum.rate_limits.edit.article.tag = perm.rate_limits.edit.article.tag; - if(perm.rate_limits.edit.article.category > permSum.rate_limits.edit.article.category) permSum.rate_limits.edit.article.category = perm.rate_limits.edit.article.category; - if(perm.rate_limits.edit.comment > permSum.rate_limits.edit.comment) permSum.rate_limits.edit.comment = perm.rate_limits.edit.comment; - if(perm.rate_limits.edit.note > permSum.rate_limits.edit.note) permSum.rate_limits.edit.note = perm.rate_limits.edit.note; - if(perm.rate_limits.edit.user > permSum.rate_limits.edit.user) permSum.rate_limits.edit.user = perm.rate_limits.edit.user; - if(perm.rate_limits.edit.category > permSum.rate_limits.edit.category) permSum.rate_limits.edit.category = perm.rate_limits.edit.category; - if(perm.rate_limits.edit.forum > permSum.rate_limits.edit.forum) permSum.rate_limits.edit.forum = perm.rate_limits.edit.forum; - if(perm.rate_limits.create.category > permSum.rate_limits.create.category) permSum.rate_limits.create.category = perm.rate_limits.create.category; - if(perm.rate_limits.create.post > permSum.rate_limits.create.post) permSum.rate_limits.create.post = perm.rate_limits.create.post; - if(perm.rate_limits.create.react > permSum.rate_limits.create.react) permSum.rate_limits.create.react = perm.rate_limits.create.react; - if(perm.rate_limits.create.article > permSum.rate_limits.create.article) permSum.rate_limits.create.article = perm.rate_limits.create.article - if(perm.rate_limits.create.comment > permSum.rate_limits.create.comment) permSum.rate_limits.create.comment = perm.rate_limits.create.comment; - if(perm.rate_limits.create.note > permSum.rate_limits.create.note) permSum.rate_limits.create.note = perm.rate_limits.create.note; - if(perm.rate_limits.create.forum > permSum.rate_limits.create.forum) permSum.rate_limits.create.forum = perm.rate_limits.create.forum; - if(perm.rate_limits.create.report > permSum.rate_limits.create.report) permSum.rate_limits.create.report = perm.rate_limits.create.report; - if(perm.rate_limits.create.user > permSum.rate_limits.create.user) permSum.rate_limits.create.user = perm.rate_limits.create.user; - if(perm.rate_limits.remove.category > permSum.rate_limits.remove.category) permSum.rate_limits.remove.category = perm.rate_limits.remove.category; - if(perm.rate_limits.remove.post > permSum.rate_limits.remove.post) permSum.rate_limits.remove.post = perm.rate_limits.remove.post; - if(perm.rate_limits.remove.react > permSum.rate_limits.remove.react) permSum.rate_limits.remove.react = perm.rate_limits.remove.react; - if(perm.rate_limits.remove.article > permSum.rate_limits.remove.article) permSum.rate_limits.remove.article = perm.rate_limits.remove.article; - if(perm.rate_limits.remove.comment > permSum.rate_limits.remove.comment) permSum.rate_limits.remove.comment = perm.rate_limits.remove.comment; - if(perm.rate_limits.remove.note > permSum.rate_limits.remove.note) permSum.rate_limits.remove.note = perm.rate_limits.remove.note; - if(perm.rate_limits.remove.forum > permSum.rate_limits.remove.forum) permSum.rate_limits.remove.forum = perm.rate_limits.remove.forum; - if(perm.rate_limits.remove.report > permSum.rate_limits.remove.report) permSum.rate_limits.remove.report = perm.rate_limits.remove.report; - if(perm.rate_limits.remove.user > permSum.rate_limits.remove.user) permSum.rate_limits.remove.user = perm.rate_limits.remove.user; - if(perm.rate_limits.site.change_config > permSum.rate_limits.site.change_config) permSum.rate_limits.site.change_config = perm.rate_limits.site.change_config; - - } - } + //TODO: update permission sum return permSum; }