Commit fd888caa authored by 王源's avatar 王源 🎧

修改生成权限名规则

parent a35ed375
...@@ -26,30 +26,30 @@ composer require meibuyu/micro @dev ...@@ -26,30 +26,30 @@ composer require meibuyu/micro @dev
> 权限名会拼接env文件中的APP_NAME属性,请注意唯一性 > 权限名会拼接env文件中的APP_NAME属性,请注意唯一性
> 所有权限必须存在于用户服务的权限表中,若不存在,请联系管理员添加权限 > 所有权限必须存在于用户服务的权限表中,若不存在,请联系管理员添加权限
##### 1、@AutoPerm ##### 1、@AutoPerm
在控制器头部添加@AutoPerm注解,为该控制器下所有的方法添加鉴权功能,生成的权限名为`小写控制名_方法名` 在控制器头部添加@AutoPerm注解,为该控制器下所有的方法添加鉴权功能,生成的权限名为`蛇形命名空间_蛇形控制名_蛇形方法名`
``` ```
/** /**
* @AutoPerm() * @AutoPerm()
*/ */
class UserController {} class UserInfoController {}
``` ```
参数: 参数:
> 1. prefix, 前缀(字符串),默认为小写控制器名(user) > 1. prefix, 前缀(字符串),默认为蛇形命名空间_蛇形控制名(user_info)
> 2. exclude, 要排除的方法名(字符串数组),默认为空 > 2. exclude, 要排除的方法名(字符串数组),默认为空
``` ```
/** /**
* @AutoPerm(prefix="user", exclude={"index"}) * @AutoPerm(prefix="user", exclude={"getUser"})
*/ */
class UserController {} class UserInfoController {}
``` ```
##### 2、@Perm ##### 2、@Perm
在控制器中的方法头部添加@Perm注解,为当前方法添加鉴权功能,生成权限名为`小写控制名_方法名` 在控制器中的方法头部添加@Perm注解,为当前方法添加鉴权功能,生成权限名为`蛇形命名空间_蛇形控制名_蛇形方法名`
``` ```
/** /**
* @Perm() * @Perm()
*/ */
function get_user {} function getUser {}
``` ```
参数: 参数:
> name, 前缀(字符串),默认为小写控制器名拼接方法名(user),如果填写指定的名称,会覆盖@AutoPerm的prefix和exclude > name, 前缀(字符串),默认为小写控制器名拼接方法名(user),如果填写指定的名称,会覆盖@AutoPerm的prefix和exclude
...@@ -57,6 +57,6 @@ function get_user {} ...@@ -57,6 +57,6 @@ function get_user {}
/** /**
* @Perm("get_user") * @Perm("get_user")
*/ */
function get_user {} function getUser {}
``` ```
...@@ -95,6 +95,7 @@ class PermAnnotationAspect extends AbstractAspect ...@@ -95,6 +95,7 @@ class PermAnnotationAspect extends AbstractAspect
if ($prefix[-1] !== '_') { if ($prefix[-1] !== '_') {
$prefix .= '_'; $prefix .= '_';
} }
$methodName = $this->parseMethodName($methodName);
return $appName . '_' . $prefix . $methodName; return $appName . '_' . $prefix . $methodName;
} }
...@@ -108,6 +109,15 @@ class PermAnnotationAspect extends AbstractAspect ...@@ -108,6 +109,15 @@ class PermAnnotationAspect extends AbstractAspect
return $prefix; return $prefix;
} }
// 处理方法名
protected function parseMethodName(string $methodName): string
{
$name = Str::snake($methodName);
$name = str_replace('__', '_', $name);
trim($name, '_');
return $name;
}
// 获取注解 // 获取注解
public function getAnnotations(ProceedingJoinPoint $proceedingJoinPoint) public function getAnnotations(ProceedingJoinPoint $proceedingJoinPoint)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment