Skip to content

Commit ec335a5

Browse files
authored
Merge pull request #2034 from appwrite/dat-522
Session Invalidation on password change
2 parents b147fe1 + ac75b78 commit ec335a5

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

src/lib/actions/analytics.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ export enum Submit {
265265
AuthSessionAlertsUpdate = 'submit_auth_session_alerts_update',
266266
AuthMembershipPrivacyUpdate = 'submit_auth_membership_privacy_update',
267267
AuthMockNumbersUpdate = 'submit_auth_mock_numbers_update',
268+
AuthInvalidateSesssion = 'submit_auth_invalidate_session',
268269
SessionsLengthUpdate = 'submit_sessions_length_update',
269270
SessionsLimitUpdate = 'submit_sessions_limit_update',
270271
SessionDelete = 'submit_session_delete',

src/routes/(console)/project-[region]-[project]/auth/security/+page.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import UpdateSessionsLimit from './updateSessionsLimit.svelte';
1010
import UpdateMembershipPrivacy from './updateMembershipPrivacy.svelte';
1111
import UpdateUsersLimit from './updateUsersLimit.svelte';
12+
import UpdateSessionInvalidation from './updateSessionInvalidation.svelte';
1213
</script>
1314

1415
<Container>
@@ -19,6 +20,7 @@
1920
<UpdatePasswordDictionary />
2021
<UpdatePersonalDataCheck />
2122
<UpdateSessionAlerts />
23+
<UpdateSessionInvalidation />
2224
<UpdateMockNumbers />
2325
<UpdateMembershipPrivacy />
2426
</Container>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<script lang="ts">
2+
import { invalidate } from '$app/navigation';
3+
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
4+
import { CardGrid } from '$lib/components';
5+
import { Dependencies } from '$lib/constants';
6+
import { Button, Form, InputSwitch } from '$lib/elements/forms';
7+
import { addNotification } from '$lib/stores/notifications';
8+
import { sdk } from '$lib/stores/sdk';
9+
import { Typography } from '@appwrite.io/pink-svelte';
10+
import { project } from '../../store';
11+
12+
let sessionInvalidation = $project?.authInvalidateSessions ?? false;
13+
14+
async function updateSessionInvalidation() {
15+
try {
16+
await sdk.forConsole.projects.updateSessionInvalidation(
17+
$project.$id,
18+
sessionInvalidation
19+
);
20+
await invalidate(Dependencies.PROJECT);
21+
addNotification({
22+
type: 'success',
23+
message: 'Updated session invalidation check.'
24+
});
25+
trackEvent(Submit.AuthInvalidateSesssion);
26+
} catch (error) {
27+
addNotification({
28+
type: 'error',
29+
message: error.message
30+
});
31+
trackError(error, Submit.AuthInvalidateSesssion);
32+
}
33+
}
34+
</script>
35+
36+
<Form onSubmit={updateSessionInvalidation}>
37+
<CardGrid>
38+
<svelte:fragment slot="title">Invalidate sessions</svelte:fragment>
39+
<svelte:fragment slot="aside">
40+
<InputSwitch
41+
bind:value={sessionInvalidation}
42+
id="invalidateSessions"
43+
label="Invalidate sessions" />
44+
<Typography.Text>
45+
Enabling this option will clear all existing sessions when the user changes their
46+
password.
47+
</Typography.Text>
48+
</svelte:fragment>
49+
50+
<svelte:fragment slot="actions">
51+
<Button disabled={sessionInvalidation === $project?.authInvalidateSessions} submit>
52+
Update
53+
</Button>
54+
</svelte:fragment>
55+
</CardGrid>
56+
</Form>

0 commit comments

Comments
 (0)