Skip to content

Commit

Permalink
feat: support profile returnUrl (#34)
Browse files Browse the repository at this point in the history
  • Loading branch information
Zerek-Cheng authored Sep 23, 2022
1 parent c94a4e2 commit b51cb65
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 9 deletions.
28 changes: 19 additions & 9 deletions src/main/java/org/casbin/casdoor/service/CasdoorAuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@
import org.casbin.casdoor.config.CasdoorConfig;
import org.casbin.casdoor.entity.CasdoorUser;
import org.casbin.casdoor.exception.CasdoorAuthException;
import org.casbin.casdoor.util.QueryUtils;

import java.io.ByteArrayInputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
Expand All @@ -43,6 +45,7 @@
import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPublicKey;
import java.text.ParseException;
import java.util.LinkedHashMap;

public class CasdoorAuthService {
private final CasdoorConfig casdoorConfig;
Expand Down Expand Up @@ -132,18 +135,25 @@ private String getSignupUrl(boolean enablePassword, String redirectUrl) {
}

public String getUserProfileUrl(String username, String accessToken) {
String param = "";
if (accessToken != null && accessToken.trim().length() != 0) {
param = "?access_token=" + accessToken;
return this.getUserProfileUrl(username, accessToken, null);
}

public String getUserProfileUrl(String username, String accessToken, String returnUrl) {
LinkedHashMap<String, Serializable> params = new LinkedHashMap<>();
if (accessToken != null && accessToken.trim().length() > 0) params.put("access_token", accessToken);
if (returnUrl != null && returnUrl.trim().length() > 0) params.put("returnUrl", returnUrl);
if (username == null || username.trim().length() == 0) {
return String.format("%s/account%s", casdoorConfig.getEndpoint(), params.size() == 0 ? "" : "?" + QueryUtils.buildQuery(params));
} else {
return String.format("%s/user/%s%s", casdoorConfig.getEndpoint(), username, params.size() == 0 ? "" : "?" + QueryUtils.buildQuery(params));
}
return String.format("%s/users/%s/%s%s", casdoorConfig.getEndpoint(), casdoorConfig.getOrganizationName(), username, param);
}

public String getMyProfileUrl(String accessToken) {
String param = "";
if (accessToken != null && accessToken.trim().length() != 0) {
param = "?access_token=" + accessToken;
}
return String.format("%s/account%s", casdoorConfig.getEndpoint(), param);
return this.getMyProfileUrl(accessToken, null);
}

public String getMyProfileUrl(String accessToken, String returnUrl) {
return this.getUserProfileUrl(null, accessToken, returnUrl);
}
}
17 changes: 17 additions & 0 deletions src/main/java/org/casbin/casdoor/util/QueryUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.casbin.casdoor.util;

import java.io.Serializable;
import java.util.Map;

public class QueryUtils {
public static String buildQuery(Map<String, Serializable> params) {
if (params == null || params.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, Serializable> entry : params.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
return sb.substring(0, sb.length() - 1);
}
}

0 comments on commit b51cb65

Please sign in to comment.