Skip to content

Commit c687c00

Browse files
authored
Merge pull request #2754 from appwrite/improve-logic
Improvements
2 parents 8d75905 + 0c65c0d commit c687c00

File tree

2 files changed

+42
-38
lines changed

2 files changed

+42
-38
lines changed

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

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,65 +8,67 @@
88
import { sdk } from '$lib/stores/sdk';
99
import { Typography, Link, Layout } from '@appwrite.io/pink-svelte';
1010
import type { Models } from '@appwrite.io/console';
11-
import { tick } from 'svelte';
11+
import { onMount } from 'svelte';
1212
13-
let { project }: { project: Models.Project } = $props();
13+
let {
14+
project
15+
}: {
16+
project: Models.Project;
17+
} = $props();
1418
19+
let lastValidLimit = $state(5);
1520
let passwordHistory = $state(5);
16-
let passwordHistoryEnabled = $state(false);
1721
let passwordDictionary = $state(false);
22+
let passwordHistoryEnabled = $state(false);
1823
let authPersonalDataCheck = $state(false);
19-
let lastValidLimit = $state(5);
20-
21-
let maxPasswordInputField: InputNumber | null = null;
2224
23-
// Initialize and sync state when project updates
24-
$effect(() => {
25-
const historyValue = project?.authPasswordHistory;
25+
onMount(() => {
26+
// update initial states here in onMount.
27+
const historyValue = project.authPasswordHistory;
2628
if (historyValue && historyValue > 0) {
2729
passwordHistory = historyValue;
2830
lastValidLimit = historyValue;
2931
}
32+
3033
passwordHistoryEnabled = (historyValue ?? 0) !== 0;
31-
passwordDictionary = project?.authPasswordDictionary ?? false;
32-
authPersonalDataCheck = project?.authPersonalDataCheck ?? false;
34+
passwordDictionary = project.authPasswordDictionary ?? false;
35+
authPersonalDataCheck = project.authPersonalDataCheck ?? false;
3336
});
3437
35-
// restore last valid limit when enabling
3638
$effect(() => {
39+
// restore last valid limit when enabling
3740
if (passwordHistoryEnabled && passwordHistory < 1) {
3841
passwordHistory = lastValidLimit;
3942
}
4043
});
4144
42-
$effect(() => {
43-
if (passwordHistoryEnabled) {
44-
tick().then(() => {
45-
if (maxPasswordInputField) {
46-
maxPasswordInputField.addInputFocus();
47-
}
48-
});
49-
}
50-
});
45+
const hasChanges = $derived.by(() => {
46+
const dictChanged = passwordDictionary !== (project.authPasswordDictionary ?? false);
47+
const dataCheckChanged = authPersonalDataCheck !== (project.authPersonalDataCheck ?? false);
48+
const historyChanged =
49+
passwordHistoryEnabled !== ((project.authPasswordHistory ?? 0) !== 0);
50+
const limitChanged =
51+
passwordHistoryEnabled &&
52+
Number(passwordHistory) !== (project.authPasswordHistory ?? 0);
5153
52-
const hasChanges = $derived(
53-
passwordHistoryEnabled !== ((project?.authPasswordHistory ?? 0) !== 0) ||
54-
(passwordHistoryEnabled && passwordHistory !== (project?.authPasswordHistory ?? 0)) ||
55-
passwordDictionary !== (project?.authPasswordDictionary ?? false) ||
56-
authPersonalDataCheck !== (project?.authPersonalDataCheck ?? false)
57-
);
54+
return historyChanged || dictChanged || dataCheckChanged || limitChanged;
55+
});
5856
5957
async function updatePasswordPolicies() {
6058
try {
61-
await sdk.forConsole.projects.updateAuthPasswordHistory({
59+
const projectSdk = sdk.forConsole.projects;
60+
61+
await projectSdk.updateAuthPasswordHistory({
6262
projectId: project.$id,
6363
limit: passwordHistoryEnabled ? passwordHistory : 0
6464
});
65-
await sdk.forConsole.projects.updateAuthPasswordDictionary({
65+
66+
await projectSdk.updateAuthPasswordDictionary({
6667
projectId: project.$id,
6768
enabled: passwordDictionary
6869
});
69-
await sdk.forConsole.projects.updatePersonalDataCheck({
70+
71+
await projectSdk.updatePersonalDataCheck({
7072
projectId: project.$id,
7173
enabled: authPersonalDataCheck
7274
});
@@ -108,10 +110,10 @@
108110
required
109111
max={20}
110112
min={1}
111-
id="password-history"
113+
autofocus
112114
label="Limit"
115+
id="password-history"
113116
bind:value={passwordHistory}
114-
bind:this={maxPasswordInputField}
115117
helper="Maximum 20 passwords." />
116118
{/if}
117119
</Layout.Stack>

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,24 @@
88
import { sdk } from '$lib/stores/sdk';
99
import { Typography } from '@appwrite.io/pink-svelte';
1010
import type { Models } from '@appwrite.io/console';
11+
import { onMount } from 'svelte';
1112
1213
let { project }: { project: Models.Project } = $props();
1314
1415
let authSessionAlerts = $state(false);
1516
let sessionInvalidation = $state(false);
1617
17-
// Initialize state from project
18-
$effect(() => {
18+
onMount(() => {
1919
authSessionAlerts = project?.authSessionAlerts ?? false;
2020
sessionInvalidation = project?.authInvalidateSessions ?? false;
2121
});
2222
23-
const hasChanges = $derived(
24-
authSessionAlerts !== (project?.authSessionAlerts ?? false) ||
25-
sessionInvalidation !== (project?.authInvalidateSessions ?? false)
26-
);
23+
const hasChanges = $derived.by(() => {
24+
const alertsChanged = authSessionAlerts !== (project?.authSessionAlerts ?? false);
25+
const invalidationChanged =
26+
sessionInvalidation !== (project?.authInvalidateSessions ?? false);
27+
return alertsChanged || invalidationChanged;
28+
});
2729
2830
async function updateSessionSecurity() {
2931
try {

0 commit comments

Comments
 (0)