This commit is contained in:
ein-giga-self 2021-05-28 12:14:09 +02:00 committed by GitHub
commit d2f11b6a67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 0 deletions

View File

@ -450,6 +450,9 @@ class UsersController extends AUserData {
);
}
}
} else {
//Password was provided by the admin
$this->editUser($userid, 'initial', 'true');
}
return new DataResponse(['id' => $userid]);
@ -682,6 +685,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_WEBSITE;
$permittedFields[] = IAccountManager::PROPERTY_TWITTER;
$permittedFields[] = 'quota';
$permittedFields[] = 'initial';
} else {
// No rights
throw new OCSException('', OCSController::RESPOND_NOT_FOUND);
@ -784,6 +788,9 @@ class UsersController extends AUserData {
}
}
break;
case 'initial':
$this->config->setUserValue($targetUser->getUID(), 'core', 'initial', $value);
break;
default:
throw new OCSException('', 103);
}

View File

@ -321,6 +321,13 @@ class LoginController extends Controller {
$result->getErrorMessage()
);
}
if($this->config->getUserValue($user, 'core', 'initial') === 'true') {
$token = $this->config->getUserKeys($user, 'login_token')[0];
$token = str_replace('/', 'A', $token);
return new RedirectResponse(
$this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', ['userId' => $user, 'token' => $token]));
}
if ($result->getRedirectUrl() !== null) {
return new RedirectResponse($result->getRedirectUrl());

View File

@ -199,6 +199,15 @@ class LostController extends Controller {
throw new \Exception($this->l10n->t('Couldn\'t reset password because the token is invalid'));
}
if($this->config->getUserValue($userId, 'core', 'initial') === 'true')
$token = $this->config->getUserKeys($userId, 'login_token')[0];
$token = str_replace('/', 'A', $token);
if($token === $token) {
return true;
}
$encryptedToken = $this->config->getUserValue($userId, 'core', 'lostpassword', null);
if ($encryptedToken === null) {
throw new \Exception($this->l10n->t('Couldn\'t reset password because the token is invalid'));
@ -317,6 +326,7 @@ class LostController extends Controller {
$this->twoFactorManager->clearTwoFactorPending($userId);
$this->config->deleteUserValue($userId, 'core', 'lostpassword');
$this->config->deleteUserValue($userId, 'core', 'initial');
@\OC::$server->getUserSession()->unsetMagicInCookie();
} catch (HintException $e) {
return $this->error($e->getHint());