https://github.com/sdorra/shiro-static-permissions
AnnotationProcessor which generates static shiro permission check objects
https://github.com/sdorra/shiro-static-permissions
annotationprocessor java permissions security shiro
Last synced: 12 months ago
JSON representation
AnnotationProcessor which generates static shiro permission check objects
- Host: GitHub
- URL: https://github.com/sdorra/shiro-static-permissions
- Owner: sdorra
- Created: 2016-10-01T14:09:51.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-01-16T20:45:30.000Z (over 2 years ago)
- Last Synced: 2025-03-02T13:31:35.985Z (over 1 year ago)
- Topics: annotationprocessor, java, permissions, security, shiro
- Language: Java
- Size: 96.7 KB
- Stars: 0
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Shiro Static Permissions
[](https://travis-ci.org/sdorra/shiro-static-permissions)
[](https://sonarcloud.io/dashboard?id=com.github.sdorra%3Assp)
[](https://sonarcloud.io/dashboard?id=com.github.sdorra%3Assp)
[](https://sonarcloud.io/dashboard?id=com.github.sdorra%3Assp)
[](https://www.jitpack.io/#sdorra/shiro-static-permissions)
Shiro Static Permissions consists of two parts an AnnotationProcessor and a small library.
The AnnotationProcessor generates classes for static permission checks with [Apache Shrio](http://shiro.apache.org/)
which allows checks like the following:
```java
// check for repository create permission
if (RepositoryPermissions.create().isPermitted()) {
// create repository
}
// throw exception if the user lacks create permission
RepositoryPermissions.create().check();
// check for repository 123 delete permission
if (RepositoryPermissions.delete("123").isPermitted()) {
// delete repository
}
// throw exception if the user lacks delete permission for repository 123
RepositoryPermissions.delete(new Repository("123")).check();
```
## Usage
```xml
com.github.sdorra
ssp-lib
x.y.z
com.github.sdorra
ssp-processor
x.y.z
true
```
```java
@StaticPermissions("repositories")
public class Repository implements PermissionObject {
private final String id;
public Repository(String id) {
this.id = id;
}
@Override
public String getId() {
return id;
}
}
```
## Real world example
[SCM-Manager](https://scm-manager.org):
* Annotation: [`User`](https://github.com/scm-manager/scm-manager/blob/3f018c22557eb2e7804f0c4e9100121992b760b2/scm-core/src/main/java/sonia/scm/user/User.java#L51)
* Permission Check: [`UserManager`](https://github.com/scm-manager/scm-manager/blob/3f018c22557eb2e7804f0c4e9100121992b760b2/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java#L250)