Skip to content

Commit

Permalink
Merge pull request #319 from the-control-group/saml_usability_improve…
Browse files Browse the repository at this point in the history
…ments

persist url for SAML redirection
  • Loading branch information
ebrown32 authored Oct 26, 2020
2 parents 1f34656 + ac5de69 commit b0e2d8e
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 11 deletions.
4 changes: 4 additions & 0 deletions main.sublime-project
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
"path": "packages/strategy-password",
"folder_exclude_patterns": ["**/node_modules", "**/dist"]
},
{
"path": "packages/strategy-saml",
"folder_exclude_patterns": ["**/node_modules", "**/dist"]
},
{
"path": "packages/tools",
"folder_exclude_patterns": ["**/node_modules", "**/dist"]
Expand Down
19 changes: 13 additions & 6 deletions packages/strategy-saml/src/interface/SamlAuthority.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,16 @@ export function SamlAuthority({
}

if (
cookieMap.samlFinishedAuthorizationId &&
cookieMap.samlFinishedAuthorizationSecret
cookieMap["strategy.saml.authorization_id"] &&
cookieMap["strategy.saml.authorization_secret"]
) {
setAuthorization({
id: cookieMap.samlFinishedAuthorizationId,
secret: cookieMap.samlFinishedAuthorizationSecret,
id: cookieMap["strategy.saml.authorization_id"],
secret: cookieMap["strategy.saml.authorization_secret"],
});
window.document.cookie = "samlFinishedAuthorizationId=";
window.document.cookie = "samlFinishedAuthorizationSecret=";
window.document.cookie = "strategy.saml.authorization_id=";
window.document.cookie = "strategy.saml.authorization_secret=";
window.document.cookie = "strategy.saml.destination=";
}

const params = new URLSearchParams(window.location.search);
Expand All @@ -62,6 +63,12 @@ export function SamlAuthority({
const [errors, setErrors] = useState<string[]>([]);
async function onSubmit(e: FormEvent): Promise<void> {
e.preventDefault();

// Save the current URL for internal redirection.
window.document.cookie = `strategy.saml.destination=${encodeURIComponent(
window.location.href
)}`;

window.location.href = authority.authUrlWithParams;
}

Expand Down
18 changes: 13 additions & 5 deletions packages/strategy-saml/src/server/samlRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,27 @@ export function samlRouterFactory(): Router<any, { [x]: Context }> {
.join("&")}&authorityId=${encodeURIComponent(authorityId)}`
);
} else {
console.log(data);

ctx.cookies.set(
"samlFinishedAuthorizationId",
"strategy.saml.authorization_id",
data.data.authenticateSaml.id,
{ httpOnly: false }
);
ctx.cookies.set(
"samlFinishedAuthorizationSecret",
"strategy.saml.authorization_secret",
data.data.authenticateSaml.secret,
{ httpOnly: false }
);
ctx.redirect(`${base}?authorityId=${encodeURIComponent(authorityId)}`);

const destination = decodeURIComponent(
ctx.cookies.get("strategy.saml.destination", {
signed: false,
}) ?? ""
);

ctx.redirect(
destination ||
`${base}?authorityId=${encodeURIComponent(authorityId)}`
);
}
}
);
Expand Down

0 comments on commit b0e2d8e

Please sign in to comment.