Skip to content

Commit 6cb3530

Browse files
authored
Merge pull request #61 from resource-watch/staging
Deploy logout redirect to production
2 parents ca3ad2f + f9e2751 commit 6cb3530

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/providers/okta.provider.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -698,10 +698,19 @@ export class OktaProvider {
698698
if (!user) {
699699
return ctx.throw(401, 'Not logged');
700700
}
701-
await OktaService.logoutUser(user);
702701

702+
let redirect_uri: string = '/auth/login';
703+
704+
if (ctx.session.callbackUrl) {
705+
logger.info('[OktaProvider] - Url redirect', ctx.session.callbackUrl);
706+
707+
redirect_uri = ctx.session.callbackUrl;
708+
}
709+
710+
await OktaService.logoutUser(user);
703711
await ctx.logout();
704-
ctx.redirect('/auth/login');
712+
713+
ctx.redirect(redirect_uri.toString());
705714
}
706715

707716
static async signUp(ctx: Context): Promise<void> {

test/e2e/okta/okta-oauth-user-logout.spec.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,30 @@ describe('[OKTA] GET logout current user session', () => {
7676
response.status.should.equal(200);
7777
});
7878

79+
it('Logging out with callbackUrl should redirect', async () => {
80+
81+
nock('https://www.wikipedia.org')
82+
.get('/')
83+
.reply(200, 'ok');
84+
85+
const user: OktaUser = getMockOktaUser();
86+
const token: string = mockValidJWT({
87+
id: user.profile.legacyId,
88+
email: user.profile.email,
89+
role: user.profile.role,
90+
extraUserData: { apps: user.profile.apps },
91+
});
92+
mockOktaListUsers({ limit: 1, search: `(profile.legacyId eq "${user.profile.legacyId}")` }, [user]);
93+
mockOktaLogoutUser(user.id);
94+
95+
const response: request.Response = await requester
96+
.get(`/auth/logout?callbackUrl=https://www.wikipedia.org/`)
97+
.set('Authorization', `Bearer ${token}`);
98+
99+
response.should.redirect;
100+
response.should.redirectTo('https://www.wikipedia.org/');
101+
});
102+
79103
after(async () => {
80104
await closeTestAgent();
81105
});

0 commit comments

Comments
 (0)