Skip to content
This repository was archived by the owner on Jan 20, 2024. 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
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ public Account authenticate(String id, Credential credential) {
if(statusCode == 200) {
Map<String, Object> map = JsonMapper.string2Map(body);
// {"roles":"user","id":"stevehu@gmail.com"}
String roles = (String)map.get("roles");
Account account = new Account() {
private Set<String> roles = splitRoles((String)map.get("roles"));
private final Principal principal = () -> id;
Expand All @@ -125,12 +124,43 @@ public Set<String> getRoles() {
}
};
return account;
} else {
// create a dummy account to return the error the the StatelessAuthHandler in light-spa-4j
Map<String, Object> map = JsonMapper.string2Map(body);
Account account = new Account() {
private final Principal principal = () -> "error";
@Override
public Principal getPrincipal() {
return principal;
}

@Override
public Set<String> getRoles() {
Set<String> roles = new HashSet<>();
roles.add((String)map.get("description"));
return roles;
}
};
return account;
}
} catch (Exception e) {
logger.error("Exception:", e);
return null;
Account account = new Account() {
private final Principal principal = () -> "error";
@Override
public Principal getPrincipal() {
return principal;
}

@Override
public Set<String> getRoles() {
Set<String> roles = new HashSet<>();
roles.add(e.getMessage());
return roles;
}
};
return account;
}
return null;
}

public Set<String> splitRoles(String roles) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,32 +53,38 @@ public void handleRequest(HttpServerExchange exchange) throws Exception {
final SecurityContext context = exchange.getSecurityContext();
String userId = context.getAuthenticatedAccount().getPrincipal().getName();
if(logger.isDebugEnabled()) logger.debug("userId = " + userId);
Set<String> roles = context.getAuthenticatedAccount().getRoles();
Map<String, String> codeMap = new HashMap<>();
codeMap.put("userId", userId);
if(roles != null && !roles.isEmpty()) {
codeMap.put("roles", String.join(" ", roles));
}
// generate auth code
String code = Util.getUUID();
if(redirectUri == null) {
redirectUri = client.getRedirectUri();
if("error".equals(userId)) {
exchange.setStatusCode(StatusCodes.BAD_REQUEST);
exchange.getResponseSender().send(context.getAuthenticatedAccount().getRoles().iterator().next());
processAudit(exchange);
} else {
codeMap.put("redirectUri", redirectUri);
}
if(remember != null) codeMap.put("remember", remember); // pass the remember checkbox value to the token service
CacheStartupHookProvider.hz.getMap("codes").set(code, codeMap);
Set<String> roles = context.getAuthenticatedAccount().getRoles();
Map<String, String> codeMap = new HashMap<>();
codeMap.put("userId", userId);
if(roles != null && !roles.isEmpty()) {
codeMap.put("roles", String.join(" ", roles));
}
// generate auth code
String code = Util.getUUID();
if(redirectUri == null) {
redirectUri = client.getRedirectUri();
} else {
codeMap.put("redirectUri", redirectUri);
}
if(remember != null) codeMap.put("remember", remember); // pass the remember checkbox value to the token service
CacheStartupHookProvider.hz.getMap("codes").set(code, codeMap);

redirectUri = redirectUri + "?code=" + code;
if(state != null) {
redirectUri = redirectUri + "&state=" + state;
redirectUri = redirectUri + "?code=" + code;
if(state != null) {
redirectUri = redirectUri + "&state=" + state;
}
if(logger.isDebugEnabled()) logger.debug("redirectUri = " + redirectUri);
// now redirect here.
exchange.setStatusCode(StatusCodes.FOUND);
exchange.getResponseHeaders().put(Headers.LOCATION, redirectUri);
exchange.endExchange();
processAudit(exchange);
}
if(logger.isDebugEnabled()) logger.debug("redirectUri = " + redirectUri);
// now redirect here.
exchange.setStatusCode(StatusCodes.FOUND);
exchange.getResponseHeaders().put(Headers.LOCATION, redirectUri);
exchange.endExchange();
processAudit(exchange);
}
}
}
4 changes: 2 additions & 2 deletions login-view/deploy-local.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
echo "Build the view in in test mode"
yarn build
echo "Build completed in build folder, start copying to local folder"
rm -rf /home/steve/networknt/light-config-test/light-router/local-portal/signin/build
cp -r ./build /home/steve/networknt/light-config-test/light-router/local-portal/signin
rm -rf /home/steve/light-chain/light-config-test/light-router/local-direct/signin/build
cp -r ./build /home/steve/light-chain/light-config-test/light-router/local-direct/signin
echo "Copied!"
11 changes: 6 additions & 5 deletions login-view/src/components/Login.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,10 @@ function Login() {
body: formData
})
.then(response => {
if (response.ok) {
return response.json();
} else {
throw Error(response.statusText);
if (!response.ok) {
throw response;
}
return response.json();
})
.then(json => {
//console.log(json);
Expand All @@ -158,7 +157,8 @@ function Login() {
setScopes(json.scopes);
})
.catch(error => {
console.log("error=", error);
error.text().then(errorMessage => {
console.log("error=", errorMessage);
const data = {
email: username,
password: password
Expand All @@ -173,6 +173,7 @@ function Login() {
const url = '/portal/query?cmd=' + encodeURIComponent(JSON.stringify(cmd));
const message = 'Login Failed! Click <a href="link">here</a> to identify root cause.'
setError(message.replace('link', url));
})
});
};

Expand Down