Skip to content

Commit b282ff1

Browse files
committed
fix(sharing): enforce password policy
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 85fccc8 commit b282ff1

3 files changed

Lines changed: 25 additions & 3 deletions

File tree

apps/files_sharing/src/components/SharingEntryLink.vue

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
:value.sync="share.newPassword"
8080
:disabled="saving"
8181
:required="config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink"
82-
:minlength="isPasswordPolicyEnabled && config.passwordPolicy.minLength"
82+
:minlength="minPasswordLength"
8383
autocomplete="new-password"
8484
@submit="onNewLinkShare(true)">
8585
<template #icon>
@@ -342,6 +342,16 @@ export default {
342342
},
343343
344344
computed: {
345+
minPasswordLength() {
346+
if (this.isPasswordPolicyEnabled) {
347+
if (this.config.passwordPolicy.policies?.sharing?.minLength) {
348+
return this.config.passwordPolicy.policies.sharing.minLength
349+
}
350+
return this.config.passwordPolicy.minLength
351+
}
352+
return 0
353+
},
354+
345355
/**
346356
* Link share label
347357
*

apps/files_sharing/src/services/ConfigService.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,24 @@
55
import { getCapabilities } from '@nextcloud/capabilities'
66
import { loadState } from '@nextcloud/initial-state'
77

8-
type PasswordPolicyCapabilities = {
8+
type PasswordPolicySettings = {
99
enforceNonCommonPassword: boolean
1010
enforceNumericCharacters: boolean
1111
enforceSpecialCharacters: boolean
1212
enforceUpperLowerCase: boolean
1313
minLength: number
1414
}
1515

16+
type PasswordPolicyCapabilities = PasswordPolicySettings & {
17+
api?: {
18+
generate: string
19+
validate: string
20+
}
21+
policies?: {
22+
sharing: PasswordPolicySettings
23+
}
24+
}
25+
1626
type FileSharingCapabilities = {
1727
api_enabled: boolean,
1828
public: {

apps/files_sharing/src/utils/GeneratePassword.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ export default async function(verbose = false): Promise<string> {
2121
// password policy is enabled, let's request a pass
2222
if (config.passwordPolicy.api && config.passwordPolicy.api.generate) {
2323
try {
24-
const request = await axios.get(config.passwordPolicy.api.generate)
24+
const request = await axios.get(config.passwordPolicy.api.generate, {
25+
params: { context: 'sharing' },
26+
})
2527
if (request.data.ocs.data.password) {
2628
if (verbose) {
2729
showSuccess(t('files_sharing', 'Password created successfully'))

0 commit comments

Comments
 (0)