/*
* Symphony - A modern community (forum/SNS/blog) platform written in Java.
* Copyright (C) 2012-2017, b3log.org & hacpai.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.b3log.symphony.model;
import java.util.Set;
/**
* This class defines all permission model relevant keys.
* <p>
* See <a href="https://github.com/b3log/symphony/issues/337">#337</a> for more details.
* </p>
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.10.1.1, May 8, 2017
* @since 1.8.0
*/
public final class Permission {
/**
* Permission.
*/
public static final String PERMISSION = "permission";
/**
* Permissions.
*/
public static final String PERMISSIONS = "permissions";
/**
* Key of permission category.
*/
public static final String PERMISSION_CATEGORY = "permissionCategory";
/**
* Key of permission id.
*/
public static final String PERMISSION_ID = "permissionId";
//// Transient ////
/**
* Key of permission categories.
*/
public static final String PERMISSION_T_CATEGORIES = "permissionCategories";
/**
* Key of permission label.
*/
public static final String PERMISSION_T_LABEL = "permissionLabel";
/**
* Key of permission grant.
*/
public static final String PERMISSION_T_GRANT = "permissionGrant";
// oId constants
/**
* Id - common - add article.
*/
public static final String PERMISSION_ID_C_COMMON_ADD_ARTICLE = "commonAddArticle";
/**
* Id - common - add article anonymous.
*/
public static final String PERMISSION_ID_C_COMMON_ADD_ARTICLE_ANONYMOUS = "commonAddArticleAnonymous";
/**
* Id - common - update article.
*/
public static final String PERMISSION_ID_C_COMMON_UPDATE_ARTICLE = "commonUpdateArticle";
/**
* Id - common - remove article.
*/
public static final String PERMISSION_ID_C_COMMON_REMOVE_ARTICLE = "commonRemoveArticle";
/**
* Id - common - add comment.
*/
public static final String PERMISSION_ID_C_COMMON_ADD_COMMENT = "commonAddComment";
/**
* Id - common add comment anonymous.
*/
public static final String PERMISSION_ID_C_COMMON_ADD_COMMENT_ANONYMOUS = "commonAddCommentAnonymous";
/**
* Id - common - update comment.
*/
public static final String PERMISSION_ID_C_COMMON_UPDATE_COMMENT = "commonUpdateComment";
/**
* Id - common - remove comment.
*/
public static final String PERMISSION_ID_C_COMMON_REMOVE_COMMENT = "commonRemoveComment";
/**
* Id - common - view comment history.
*/
public static final String PERMISSION_ID_C_COMMON_VIEW_COMMENT_HISTORY = "commonViewCommentHistory";
/**
* Id - common - stick article.
*/
public static final String PERMISSION_ID_C_COMMON_STICK_ARTICLE = "commonStickArticle";
/**
* Id - common - thank article.
*/
public static final String PERMISSION_ID_C_COMMON_THANK_ARTICLE = "commonThankArticle";
/**
* Id - common - good article.
*/
public static final String PERMISSION_ID_C_COMMON_GOOD_ARTICLE = "commonGoodArticle";
/**
* Id - common - bad article.
*/
public static final String PERMISSION_ID_C_COMMON_BAD_ARTICLE = "commonBadArticle";
/**
* Id - common - follow article.
*/
public static final String PERMISSION_ID_C_COMMON_FOLLOW_ARTICLE = "commonFollowArticle";
/**
* Id - common - watch article.
*/
public static final String PERMISSION_ID_C_COMMON_WATCH_ARTICLE = "commonWatchArticle";
/**
* Id - common - view article history.
*/
public static final String PERMISSION_ID_C_COMMON_VIEW_ARTICLE_HISTORY = "commonViewArticleHistory";
/**
* Id - common - thank comment.
*/
public static final String PERMISSION_ID_C_COMMON_THANK_COMMENT = "commonThankComment";
/**
* Id - common - good comment.
*/
public static final String PERMISSION_ID_C_COMMON_GOOD_COMMENT = "commonGoodComment";
/**
* Id - common - bad comment.
*/
public static final String PERMISSION_ID_C_COMMON_BAD_COMMENT = "commonBadComment";
/**
* Id - common - at user.
*/
public static final String PERMISSION_ID_C_COMMON_AT_USER = "commonAtUser";
/**
* Id - common - at participants.
*/
public static final String PERMISSION_ID_C_COMMON_AT_PARTICIPANTS = "commonAtParticipants";
/**
* Id - common - exchange invitation code.
*/
public static final String PERMISSION_ID_C_COMMON_EXCHANGE_INVITATION_CODE = "commonExchangeIC";
/**
* Id - common - use invitation link.
*/
public static final String PERMISSION_ID_C_COMMON_USE_INVITATION_LINK = "commonUseIL";
/**
* Id - user - add user.
*/
public static final String PERMISSION_ID_C_USER_ADD_USER = "userAddUser";
/**
* Id - user - update user basic data.
*/
public static final String PERMISSION_ID_C_USER_UPDATE_USER_BASIC = "userUpdateUserBasic";
/**
* Id - user - update user advanced data.
*/
public static final String PERMISSION_ID_C_USER_UPDATE_USER_ADVANCED = "userUpdateUserAdvanced";
/**
* Id - user - add point.
*/
public static final String PERMISSION_ID_C_USER_ADD_POINT = "userAddPoint";
/**
* Id - user - exchange point.
*/
public static final String PERMISSION_ID_C_USER_EXCHANGE_POINT = "userExchangePoint";
/**
* Id - user - deduct point.
*/
public static final String PERMISSION_ID_C_USER_DEDUCT_POINT = "userDeductPoint";
/**
* Id - article - update article basic.
*/
public static final String PERMISSION_ID_C_ARTICLE_UPDATE_ARTICLE_BASIC = "articleUpdateArticleBasic";
/**
* Id - article - stick article.
*/
public static final String PERMISSION_ID_C_ARTICLE_STICK_ARTICLE = "articleStickArticle";
/**
* Id - article - cancel stick article.
*/
public static final String PERMISSION_ID_C_ARTICLE_CANCEL_STICK_ARTICLE = "articleCancelStickArticle";
/**
* Id - article - rebuild all articles index.
*/
public static final String PERMISSION_ID_C_ARTICLE_REINDEX_ARTICLES_INDEX = "articleReindexArticles";
/**
* Id - article - rebuild article index.
*/
public static final String PERMISSION_ID_C_ARTICLE_REINDEX_ARTICLE_INDEX = "articleReindexArticle";
/**
* Id - article - add article.
*/
public static final String PERMISSION_ID_C_ARTICLE_ADD_ARTICLE = "articleAddArticle";
/**
* Id - article - remove article.
*/
public static final String PERMISSION_ID_C_ARTICLE_REMOVE_ARTICLE = "articleRemoveArticle";
/**
* Id - comment - update comment basic.
*/
public static final String PERMISSION_ID_C_COMMENT_UPDATE_COMMENT_BASIC = "commentUpdateCommentBasic";
/**
* Id - comment - remove comment.
*/
public static final String PERMISSION_ID_C_COMMENT_REMOVE_COMMENT = "commentRemoveComment";
/**
* Id - domain - add domain.
*/
public static final String PERMISSION_ID_C_DOMAIN_ADD_DOMAIN = "domainAddDomain";
/**
* Id - domain - add domain tag.
*/
public static final String PERMISSION_ID_C_DOMAIN_ADD_DOMAIN_TAG = "domainAddDomainTag";
/**
* Id - domain - remove domain tag.
*/
public static final String PERMISSION_ID_C_DOMAIN_REMOVE_DOMAIN_TAG = "domainRemoveDomainTag";
/**
* Id - domain - update domain basic.
*/
public static final String PERMISSION_ID_C_DOMAIN_UPDATE_DOMAIN_BASIC = "domainUpdateDomainBasic";
/**
* Id - domain - remove domain.
*/
public static final String PERMISSION_ID_C_DOMAIN_REMOVE_DOMAIN = "domainRemoveDomain";
/**
* Id - tag - update tag basic.
*/
public static final String PERMISSION_ID_C_TAG_UPDATE_TAG_BASIC = "tagUpdateTagBasic";
/**
* Id - reserved word - add reserved word.
*/
public static final String PERMISSION_ID_C_RW_ADD_RW = "rwAddReservedWord";
/**
* Id - reserved word - update reserved word basic.
*/
public static final String PERMISSION_ID_C_RW_UPDATE_RW_BASIC = "rwUpdateReservedWordBasic";
/**
* Id - reserved word - remove reserved word.
*/
public static final String PERMISSION_ID_C_RW_REMOVE_RW = "rwRemoveReservedWord";
/**
* Id - invitation code - generate ic.
*/
public static final String PERMISSION_ID_C_IC_GEN_IC = "icGenIC";
/**
* Id - invitation code - update ic basic.
*/
public static final String PERMISSION_ID_C_IC_UPDATE_IC_BASIC = "icUpdateICBasic";
/**
* Id - advertise - update side.
*/
public static final String PERMISSION_ID_C_AD_UPDATE_SIDE = "adUpdateADSide";
/**
* Id - advertise - update banner.
*/
public static final String PERMISSION_ID_C_AD_UPDATE_BANNER = "adUpdateBanner";
/**
* Id - misc - allow add article.
*/
public static final String PERMISSION_ID_C_MISC_ALLOW_ADD_ARTICLE = "miscAllowAddArticle";
/**
* Id - misc - allow add comment.
*/
public static final String PERMISSION_ID_C_MISC_ALLOW_ADD_COMMENT = "miscAllowAddComment";
/**
* Id - misc - allow anonymous view.
*/
public static final String PERMISSION_ID_C_MISC_ALLOW_ANONYMOUS_VIEW = "miscAllowAnonymousView";
/**
* Id - misc - change register method.
*/
public static final String PERMISSION_ID_C_MISC_REGISTER_METHOD = "miscRegisterMethod";
/**
* Id - misc - change language.
*/
public static final String PERMISSION_ID_C_MISC_LANGUAGE = "miscLanguage";
/**
* Id - menu - admin.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN = "menuAdmin";
/**
* Id - menu - admin - users.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_USERS = "menuAdminUsers";
/**
* Id - menu - admin - articles.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_ARTICLES = "menuAdminArticles";
/**
* Id - menu - admin - comments.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_COMMENTS = "menuAdminComments";
/**
* Id - menu - admin - domains.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_DOMAINS = "menuAdminDomains";
/**
* Id - menu - admin - tags.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_TAGS = "menuAdminTags";
/**
* Id - menu - admin - reserved words.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_RWS = "menuAdminRWs";
/**
* Id - menu - admin - invitecodes.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_ICS = "menuAdminIcs";
/**
* Id - menu - admin - ad.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_AD = "menuAdminAD";
/**
* Id - menu - admin - roles.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_ROLES = "menuAdminRoles";
/**
* Id - menu - admin - misc.
*/
public static final String PERMISSION_ID_C_MENU_ADMIN_MISC = "menuAdminMisc";
// Category constants
/**
* Category - common function.
*/
public static final int PERMISSION_CATEGORY_C_COMMON = 0;
/**
* Category - user management.
*/
public static final int PERMISSION_CATEGORY_C_USER = 1;
/**
* Category - article management.
*/
public static final int PERMISSION_CATEGORY_C_ARTICLE = 2;
/**
* Category - comment management.
*/
public static final int PERMISSION_CATEGORY_C_COMMENT = 3;
/**
* Category - domain management.
*/
public static final int PERMISSION_CATEGORY_C_DOMAIN = 4;
/**
* Category - tag management.
*/
public static final int PERMISSION_CATEGORY_C_TAG = 5;
/**
* Category - reserved word management.
*/
public static final int PERMISSION_CATEGORY_C_RESERVED_WORD = 6;
/**
* Category - invitecode management.
*/
public static final int PERMISSION_CATEGORY_C_IC = 7;
/**
* Category - advertise management.
*/
public static final int PERMISSION_CATEGORY_C_AD = 8;
/**
* Category - misc management.
*/
public static final int PERMISSION_CATEGORY_C_MISC = 9;
/**
* Category - menu.
*/
public static final int PERMISSION_CATEGORY_C_MENU = 10;
/**
* Private constructor.
*/
private Permission() {
}
/**
* Checks whether the specified grant permissions contains the specified requisite permissions.
*
* @param requisitePermissions the specified requisite permissions
* @param grantPermissions the specified grant permissions
* @return {@code true} if the specified grant permissions contains the specified requisite permissions, returns
* {@code false} otherwise
*/
public static boolean hasPermission(final Set<String> requisitePermissions, final Set<String> grantPermissions) {
for (final String requisitePermission : requisitePermissions) {
if (!grantPermissions.contains(requisitePermission)) {
return false;
}
}
return true;
}
}