app/controllers/UserController.php: adding oauthDisconnectAction()
This commit is contained in:
parent
9ded2f36ad
commit
29e42c7641
1 changed files with 44 additions and 0 deletions
|
|
@ -46,4 +46,48 @@ class UserController extends ControllerBase
|
||||||
$this->view->page = $paginator->getPaginate();
|
$this->view->page = $paginator->getPaginate();
|
||||||
$this->view->pagination_url = '/user/activity/';
|
$this->view->pagination_url = '/user/activity/';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function oauthDisconnectAction($provider, $last_unlink_confirmed = false)
|
||||||
|
{
|
||||||
|
$user = $this->_getAuth()->getUser();
|
||||||
|
|
||||||
|
// Check if we are unlinking the last provider
|
||||||
|
if (count($user->getSocialLinks()) <= 1) {
|
||||||
|
|
||||||
|
// If user does not have a password, we wont allow it.
|
||||||
|
if (strlen($user->getPassword()) < 1) {
|
||||||
|
$msg = 'Unlinking your last OAuth provider cannot be done '
|
||||||
|
. 'if you don\'t have a password as it would be impossible for you to log in.';
|
||||||
|
|
||||||
|
$this->flash->message('error', $msg);
|
||||||
|
$this->response->redirect('/settings');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Give a warning to the user about password as the only login option.
|
||||||
|
if ($last_unlink_confirmed == false) {
|
||||||
|
|
||||||
|
$url = $this->url->get([
|
||||||
|
'for' => 'oauth-disconnect-confirm',
|
||||||
|
'provider' => $provider,
|
||||||
|
'confirm' => 'confirm',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$msg = '<p>You are about to unlink the last OAuth provider.'
|
||||||
|
. ' Your <strong>only</strong> login option will be <strong>password</strong> if you do this.</p>'
|
||||||
|
. '<p>Are you sure? <a class="alert-link" href="' . $url .'">Yes</a></p>';
|
||||||
|
|
||||||
|
$this->flash->message('warning', $msg);
|
||||||
|
$this->response->redirect('/settings');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->{'set' . $provider . 'Id'}(null);
|
||||||
|
$user->save();
|
||||||
|
|
||||||
|
$this->flash->message('success', "<p><strong>{$provider}</strong> was disconnected</p>");
|
||||||
|
|
||||||
|
$this->response->redirect('/settings');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue