Added authorized support (2FA)

This commit is contained in:
Matias Griese
2018-05-10 19:56:56 +03:00
parent 2c7d866724
commit 2c82e15fa1
2 changed files with 8 additions and 4 deletions

View File

@@ -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;
} }
} }

View File

@@ -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('');
} }