xiejun
2024-11-01 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a
Source/BladeX-Tool/blade-core-secure/src/main/java/org/springblade/core/secure/auth/AuthFun.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package org.springblade.core.secure.auth;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.handler.IPermissionHandler;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.utils.*;
/**
 * æƒé™åˆ¤æ–­
 *
 * @author Chill
 */
public class AuthFun {
   /**
    * æƒé™æ ¡éªŒå¤„理器
    */
   private static IPermissionHandler permissionHandler;
   private static IPermissionHandler getPermissionHandler() {
      if (permissionHandler == null) {
         permissionHandler = SpringUtil.getBean(IPermissionHandler.class);
      }
      return permissionHandler;
   }
   /**
    * åˆ¤æ–­è§’色是否具有接口权限
    *
    * @return {boolean}
    */
   public boolean permissionAll() {
      return getPermissionHandler().permissionAll();
   }
   /**
    * åˆ¤æ–­è§’色是否具有接口权限
    *
    * @param permission æƒé™ç¼–号
    * @return {boolean}
    */
   public boolean hasPermission(String permission) {
      return getPermissionHandler().hasPermission(permission);
   }
   /**
    * æ”¾è¡Œæ‰€æœ‰è¯·æ±‚
    *
    * @return {boolean}
    */
   public boolean permitAll() {
      return true;
   }
   /**
    * åªæœ‰è¶…管角色才可访问
    *
    * @return {boolean}
    */
   public boolean denyAll() {
      return hasRole(RoleConstant.ADMIN);
   }
   /**
    * æ˜¯å¦å·²æŽˆæƒ
    *
    * @return {boolean}
    */
   public boolean hasAuth() {
      return Func.isNotEmpty(AuthUtil.getUser());
   }
   /**
    * æ˜¯å¦æœ‰æ—¶é—´æŽˆæƒ
    *
    * @param start å¼€å§‹æ—¶é—´
    * @param end   ç»“束时间
    * @return {boolean}
    */
   public boolean hasTimeAuth(Integer start, Integer end) {
      Integer hour = DateUtil.hour();
      return hour >= start && hour <= end;
   }
   /**
    * åˆ¤æ–­æ˜¯å¦æœ‰è¯¥è§’色权限
    *
    * @param role å•角色
    * @return {boolean}
    */
   public boolean hasRole(String role) {
      return hasAnyRole(role);
   }
   /**
    * åˆ¤æ–­æ˜¯å¦å…·æœ‰æ‰€æœ‰è§’色权限
    *
    * @param role è§’色集合
    * @return {boolean}
    */
   public boolean hasAllRole(String... role) {
      for (String r : role) {
         if (!hasRole(r)) {
            return false;
         }
      }
      return true;
   }
   /**
    * åˆ¤æ–­æ˜¯å¦æœ‰è¯¥è§’色权限
    *
    * @param role è§’色集合
    * @return {boolean}
    */
   public boolean hasAnyRole(String... role) {
      BladeUser user = AuthUtil.getUser();
      if (user == null) {
         return false;
      }
      String userRole = user.getRoleName();
      if (StringUtil.isBlank(userRole)) {
         return false;
      }
      String[] roles = Func.toStrArray(userRole);
      for (String r : role) {
         if (CollectionUtil.contains(roles, r)) {
            return true;
         }
      }
      return false;
   }
}