mirror of
https://github.com/getgrav/grav.git
synced 2025-12-05 23:39:58 +01:00
Added authorized support (2FA)
This commit is contained in:
@@ -16,6 +16,7 @@ use Grav\Common\Twig\TokenParser\TwigTokenParserStyle;
|
|||||||
use Grav\Common\Twig\TokenParser\TwigTokenParserSwitch;
|
use Grav\Common\Twig\TokenParser\TwigTokenParserSwitch;
|
||||||
use Grav\Common\Twig\TokenParser\TwigTokenParserTryCatch;
|
use Grav\Common\Twig\TokenParser\TwigTokenParserTryCatch;
|
||||||
use Grav\Common\Twig\TokenParser\TwigTokenParserMarkdown;
|
use Grav\Common\Twig\TokenParser\TwigTokenParserMarkdown;
|
||||||
|
use Grav\Common\User\User;
|
||||||
use Grav\Common\Utils;
|
use Grav\Common\Utils;
|
||||||
use Grav\Common\Markdown\Parsedown;
|
use Grav\Common\Markdown\Parsedown;
|
||||||
use Grav\Common\Markdown\ParsedownExtra;
|
use Grav\Common\Markdown\ParsedownExtra;
|
||||||
@@ -875,7 +876,10 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn
|
|||||||
*/
|
*/
|
||||||
public function authorize($action)
|
public function authorize($action)
|
||||||
{
|
{
|
||||||
if (!$this->grav['user']->authenticated) {
|
/** @var User $user */
|
||||||
|
$user = $this->grav['user'];
|
||||||
|
|
||||||
|
if (!$user->authenticated || (isset($user->authorized) && !$user->authorized)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -884,7 +888,7 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn
|
|||||||
$prefix = is_int($key) ? '' : $key . '.';
|
$prefix = is_int($key) ? '' : $key . '.';
|
||||||
$perms = $prefix ? (array) $perms : [$perms => true];
|
$perms = $prefix ? (array) $perms : [$perms => true];
|
||||||
foreach ($perms as $action2 => $authenticated) {
|
foreach ($perms as $action2 => $authenticated) {
|
||||||
if ($this->grav['user']->authorize($prefix . $action2)) {
|
if ($user->authorize($prefix . $action2)) {
|
||||||
return $authenticated;
|
return $authenticated;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ class User extends Data
|
|||||||
$files = $account_dir ? array_diff(scandir($account_dir), ['.', '..']) : [];
|
$files = $account_dir ? array_diff(scandir($account_dir), ['.', '..']) : [];
|
||||||
|
|
||||||
// Try with username first, you never know!
|
// Try with username first, you never know!
|
||||||
if (in_array('username', $fields)) {
|
if (in_array('username', $fields, true)) {
|
||||||
$user = User::load($query);
|
$user = User::load($query);
|
||||||
unset($fields[array_search('username', $fields)]);
|
unset($fields[array_search('username', $fields, true)]);
|
||||||
} else {
|
} else {
|
||||||
$user = User::load('');
|
$user = User::load('');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user