Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cash-loan-flow-boss
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QG
cash-loan-flow-boss
Commits
c8ce9cab
Commit
c8ce9cab
authored
Sep 18, 2019
by
suntao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
权限 表结构重构
parent
9bfb5f62
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
5 deletions
+28
-5
Role.java
.../cn/quantgroup/cashloanflowboss/api/role/entity/Role.java
+1
-1
SecurityInterceptor.java
...hloanflowboss/component/security/SecurityInterceptor.java
+3
-1
ApplicationSecurityHandler.java
...owboss/core/configuration/ApplicationSecurityHandler.java
+24
-3
No files found.
src/main/java/cn/quantgroup/cashloanflowboss/api/role/entity/Role.java
View file @
c8ce9cab
...
@@ -36,7 +36,7 @@ public class Role extends Primary implements UnaryOperator<Role> {
...
@@ -36,7 +36,7 @@ public class Role extends Primary implements UnaryOperator<Role> {
//@Column(name = "permissions")
//@Column(name = "permissions")
//private List<Permission> permissions;
//private List<Permission> permissions;
/**
/**
*
用户角色列表
*
权限
*/
*/
@OneToMany
(
fetch
=
FetchType
.
EAGER
)
@OneToMany
(
fetch
=
FetchType
.
EAGER
)
@JoinTable
(
name
=
"role_permission_mapping"
,
joinColumns
=
@JoinColumn
(
name
=
"role_id"
),
inverseJoinColumns
=
@JoinColumn
(
name
=
"permission_id"
))
@JoinTable
(
name
=
"role_permission_mapping"
,
joinColumns
=
@JoinColumn
(
name
=
"role_id"
),
inverseJoinColumns
=
@JoinColumn
(
name
=
"permission_id"
))
...
...
src/main/java/cn/quantgroup/cashloanflowboss/component/security/SecurityInterceptor.java
View file @
c8ce9cab
package
cn
.
quantgroup
.
cashloanflowboss
.
component
.
security
;
package
cn
.
quantgroup
.
cashloanflowboss
.
component
.
security
;
import
cn.quantgroup.cashloanflowboss.component.security.annotiation.Security
;
import
cn.quantgroup.cashloanflowboss.component.security.annotiation.Security
;
import
cn.quantgroup.cashloanflowboss.core.base.Result
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
cn.quantgroup.cashloanflowboss.core.exception.ApplicationException
;
import
cn.quantgroup.cashloanflowboss.core.exception.ApplicationException
;
import
org.aopalliance.intercept.MethodInterceptor
;
import
org.aopalliance.intercept.MethodInterceptor
;
import
org.aopalliance.intercept.MethodInvocation
;
import
org.aopalliance.intercept.MethodInvocation
;
...
@@ -19,7 +21,7 @@ public class SecurityInterceptor extends ApplicationObjectSupport implements Met
...
@@ -19,7 +21,7 @@ public class SecurityInterceptor extends ApplicationObjectSupport implements Met
Security
security
=
invocation
.
getMethod
().
getAnnotation
(
Security
.
class
);
Security
security
=
invocation
.
getMethod
().
getAnnotation
(
Security
.
class
);
if
(!
this
.
getApplicationContext
().
getBean
(
SecurityHandler
.
class
).
doAuthentication
(
invocation
,
security
.
authorityId
(),
security
.
authorities
()))
{
if
(!
this
.
getApplicationContext
().
getBean
(
SecurityHandler
.
class
).
doAuthentication
(
invocation
,
security
.
authorityId
(),
security
.
authorities
()))
{
throw
new
ApplicationException
(
"认证失败"
);
return
Result
.
buildFial
(
ApplicationStatus
.
INVALID_AUTHORITY
);
}
}
return
invocation
.
proceed
();
return
invocation
.
proceed
();
...
...
src/main/java/cn/quantgroup/cashloanflowboss/core/configuration/ApplicationSecurityHandler.java
View file @
c8ce9cab
...
@@ -7,10 +7,13 @@ import cn.quantgroup.cashloanflowboss.component.security.SecurityHandler;
...
@@ -7,10 +7,13 @@ import cn.quantgroup.cashloanflowboss.component.security.SecurityHandler;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.asserts.Assert
;
import
cn.quantgroup.cashloanflowboss.core.asserts.Assert
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
cn.quantgroup.cashloanflowboss.utils.JSONTools
;
import
org.aopalliance.intercept.MethodInvocation
;
import
org.aopalliance.intercept.MethodInvocation
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -32,13 +35,28 @@ public class ApplicationSecurityHandler implements SecurityHandler {
...
@@ -32,13 +35,28 @@ public class ApplicationSecurityHandler implements SecurityHandler {
boolean
superAdministrator
=
principal
.
isSuperAdministrator
();
boolean
superAdministrator
=
principal
.
isSuperAdministrator
();
boolean
anyMatch
=
principal
.
getRoles
().
stream
().
anyMatch
(
role
->
{
boolean
anyMatch
=
principal
.
getRoles
().
stream
().
anyMatch
(
role
->
{
Stream
<
Role
>
iterate
=
Stream
.
iterate
(
role
,
Role:
:
getParent
);
List
<
Role
>
roleList
=
getRoleAndParent
(
role
);
return
Objects
.
nonNull
(
iterate
)
&&
iterate
.
anyMatch
(
_role
->
this
.
checkAuthority
(
authorityId
,
_role
));
return
roleList
.
stream
()
.
anyMatch
(
_role
->
this
.
checkAuthority
(
authorityId
,
_role
));
});
});
return
superAdministrator
||
anyMatch
;
return
superAdministrator
||
anyMatch
;
}
}
private
List
<
Role
>
getRoleAndParent
(
Role
role
)
{
if
(
role
==
null
)
{
return
new
ArrayList
<>();
}
List
<
Role
>
list
=
new
ArrayList
<>();
list
.
add
(
role
);
while
(
role
.
getParent
()
!=
null
)
{
role
=
role
.
getParent
();
list
.
add
(
role
);
}
return
list
;
}
/**
/**
* 检查权限
* 检查权限
*
*
...
@@ -47,7 +65,10 @@ public class ApplicationSecurityHandler implements SecurityHandler {
...
@@ -47,7 +65,10 @@ public class ApplicationSecurityHandler implements SecurityHandler {
* @return
* @return
*/
*/
private
boolean
checkAuthority
(
String
authorityId
,
Role
role
)
{
private
boolean
checkAuthority
(
String
authorityId
,
Role
role
)
{
return
Objects
.
nonNull
(
role
)
&&
CollectionUtils
.
isNotEmpty
(
role
.
getPermissions
())
&&
role
.
getPermissions
().
parallelStream
().
anyMatch
(
permission
->
permission
.
getName
().
equals
(
authorityId
));
if
(
role
==
null
)
{
return
false
;
}
return
CollectionUtils
.
isNotEmpty
(
role
.
getPermissions
())
&&
role
.
getPermissions
().
parallelStream
().
anyMatch
(
permission
->
permission
.
getName
().
equals
(
authorityId
));
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment