Merge pull request #59289 from nextcloud/fix/sharing-pwd
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions

fix(sharing): show common confirmation on password reset
This commit is contained in:
Ferdinand Thiessen 2026-04-09 19:22:09 +02:00 committed by GitHub
commit 033e78e587
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 18 deletions

View file

@ -21,7 +21,7 @@ import NcPasswordField from '@nextcloud/vue/components/NcPasswordField'
const publicShareAuth = loadState<{
canResendPassword: boolean
shareType: ShareType
identityOk?: boolean | null
showPasswordReset?: boolean
invalidPassword?: boolean
}>('core', 'publicShareAuth')
@ -29,8 +29,8 @@ const requestToken = getRequestToken()
const sharingToken = getSharingToken()
const { shareType, invalidPassword, canResendPassword } = publicShareAuth
const hasIdentityCheck = typeof publicShareAuth.identityOk === 'boolean'
const showIdentityCheck = ref(typeof publicShareAuth.identityOk === 'boolean')
const isPasswordResetProcessed = !!publicShareAuth.showPasswordReset
const showPasswordReset = ref(publicShareAuth.showPasswordReset ?? false)
const password = ref('')
const email = ref('')
@ -48,7 +48,7 @@ onMounted(() => {
<NcGuestContent :class="$style.publicShareAuth">
<h2>{{ t('core', 'This share is password-protected') }}</h2>
<form
v-show="!showIdentityCheck"
v-show="!showPasswordReset"
:class="$style.publicShareAuth__form"
method="POST">
<NcNoteCard v-if="invalidPassword" type="error">
@ -74,15 +74,14 @@ onMounted(() => {
</form>
<form
v-if="showIdentityCheck"
v-if="showPasswordReset"
:class="$style.publicShareAuth__form"
method="POST">
<NcNoteCard v-if="!hasIdentityCheck" type="info">
{{ t('core', 'Please type in your email address to request a temporary password') }}
</NcNoteCard>
<NcNoteCard v-else :type="publicShareAuth.identityOk ? 'success' : 'error'">
{{ publicShareAuth.identityOk ? t('core', 'Password sent!') : t('core', 'You are not authorized to request a password for this share') }}
<NcNoteCard type="info">
{{ isPasswordResetProcessed
? t('core', 'If the email address was correct then you will receive an email with the password.')
: t('core', 'Please type in your email address to request a temporary password')
}}
</NcNoteCard>
<NcTextField
@ -96,7 +95,7 @@ onMounted(() => {
<input type="hidden" name="passwordRequest" value="">
<NcFormBox row>
<NcButton wide @click="showIdentityCheck = false">
<NcButton wide @click="showPasswordReset = false">
{{ t('core', 'Back') }}
</NcButton>
<NcButton type="submit" variant="primary" wide>
@ -107,10 +106,10 @@ onMounted(() => {
<!-- request password button -->
<NcButton
v-if="canResendPassword && !showIdentityCheck"
v-if="canResendPassword && !showPasswordReset"
:class="$style.publicShareAuth__forgotPasswordButton"
wide
@click="showIdentityCheck = true">
@click="showPasswordReset = true">
{{ t('core', 'Forgot password') }}
</NcButton>
</NcGuestContent>

View file

@ -9,10 +9,12 @@
\OCP\Util::addStyle('core', 'guest');
\OCP\Util::addScript('core', 'public_share_auth');
$showPasswordReset = isset($_['identityOk']) && $_['identityOk'] !== null;
$initialState = \OCP\Server::get(\OCP\IInitialStateService::class);
$initialState->provideInitialState('files_sharing', 'sharingToken', $_['share']->getToken());
$initialState->provideInitialState('core', 'publicShareAuth', [
'identityOk' => $_['identityOk'] ?? null,
// if the password reset was processed (not caring about result)
'showPasswordReset' => $showPasswordReset,
'shareType' => $_['share']->getShareType(),
'invalidPassword' => $_['wrongpw'] ?? null,
'canResendPassword' => $_['share']->getShareType() === \OCP\Share\IShare::TYPE_EMAIL && !$_['share']->getSendPasswordByTalk(),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long