Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Manifest-Version: 1.0
Implementation-Title: java-jwt-tools
Implementation-Title: mo-jwt-java
Implementation-Version: 0.1.0

12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# java-jwt-tools

This is a library used to get access token(JWT) from your front end, decode it, and get user's Scopes, Groups, Roles, and Permissions information.
This is a library currently used to get access token(JWT) from your front end, decode it, and get user's Scopes, Groups, Roles, and Permissions information.

To install the library, please add dependencies to your build file:

Expand All @@ -9,14 +9,16 @@ To install the library, please add dependencies to your build file:
}

dependencies {
compile 'com.github.YangCaoModa:java-jwt-tools:v0.1.1'
compile 'com.github.ModaOperandi:mo-jwt-java:v0.1.0'
}


To use JWTDecoder and JWTGetter in your controllers, please add these packages:
To use JWTDecoder and JWTGetter in your classes, please add these packages:

import com.modaoperandi.java.jwt.tools.JWTGetter;
import com.modaoperandi.java.jwt.tools.JWTDecoder;
import com.modaoperandi.jwt.java.JWTGetter;
import com.modaoperandi.jwt.java.JWTDecoder;

Here is an example codes to add in your controllers:

@Autowired
private HttpServletRequest request;
Expand Down
8 changes: 7 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@ plugins {
id 'java-library'
}

repositories { mavenCentral() }
repositories {
mavenCentral()
maven {
url "https://jitpack.io"
credentials { username 'jp_am1gb3ih8jb1jq01hdtbo1q23t' }
}
}

version = '0.1.0'

Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
* in the user guide at https://docs.gradle.org/5.0/userguide/multi_project_builds.html
*/

rootProject.name = 'java-jwt-tools'
rootProject.name = 'mo-jwt-java'
104 changes: 0 additions & 104 deletions src/main/java/com/modaoperandi/java/jwt/tools/JWTDecoder.java

This file was deleted.

25 changes: 0 additions & 25 deletions src/main/java/com/modaoperandi/java/jwt/tools/JWTGetter.java

This file was deleted.

119 changes: 119 additions & 0 deletions src/main/java/com/modaoperandi/jwt/java/DecodedToken.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
package com.modaoperandi.jwt.java;

import javax.servlet.http.HttpServletRequest;

import com.auth0.jwt.JWT;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.interfaces.DecodedJWT;

public class DecodedToken {

private static final String namespace = "https://perms.moda.com/";
private String authToken;
private String scopes;
private String[] groups;
private String[] roles;
private String[] permissions;

public DecodedToken() {
this.authToken = null;
this.scopes = null;
this.groups = null;
this.roles = null;
this.permissions = null;
}

public DecodedToken(HttpServletRequest request) {
helper(request);
decodeClaims(this.authToken);
}

public DecodedToken(String token) {
this.authToken = token;
decodeClaims(token);
}

public String getToken() {
return this.authToken;
}

public String getScopes() {
return this.scopes;
}

public String[] getGroups() {
return this.groups;
}

public String[] getRoles() {
return this.roles;
}

public String[] getPermissions() {
return this.permissions;
}

public void printToken() {
System.out.println("-------------ACCESS TOKEN-------------");
System.out.println(this.authToken);
System.out.println("-------------ACCESS TOKEN-------------");
}

public void printScopes() {
System.out.println("Scopes: " + this.scopes);
}

public void printGroups() {
System.out.println("Groups: " + arrayToString(this.groups));
}

public void printRoles() {
System.out.println("Roles: " + arrayToString(this.roles));
}

public void printPermissions() {
System.out.println("Permissions: " + arrayToString(this.permissions));
}

public void printUserInfo() {
try {
printScopes();
printGroups();
printRoles();
printPermissions();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}

private void helper(HttpServletRequest request) {
try {
String header = request.getHeader("Authorization");
this.authToken = header != null ? header.substring(7) : null;
} catch (Exception e) {
System.err.println(e.getMessage());
}
}

private void decodeClaims(String token) {
try {
DecodedJWT jwt = JWT.decode(token);
this.scopes = jwt.getClaim("scope").asString();
this.groups = jwt.getClaim(namespace + "groups").asArray(String.class);
this.roles = jwt.getClaim(namespace + "roles").asArray(String.class);
this.permissions = jwt.getClaim(namespace + "permissions").asArray(String.class);
} catch (NullPointerException e) {
System.out.println("Token is null.");
} catch (JWTDecodeException e){
System.out.println("Invalid token.");
}
}

private String arrayToString(String[] array) {
StringBuilder sb = new StringBuilder();
for (String str : array) {
sb.append(str).append(" ");
}
return sb.toString().trim();
}
}
43 changes: 0 additions & 43 deletions src/test/java/com/modaoperandi/java/jwt/tools/JWTDecoderTest.java

This file was deleted.

14 changes: 0 additions & 14 deletions src/test/java/com/modaoperandi/java/jwt/tools/JWTGetterTest.java

This file was deleted.

Loading