You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Предположительно Сессии вы будете использовать в веб-приложениях после логина в личный кабинет,а Токен, например, в микро приложениях в качестве api сервисов. Но ничего вам не мешает применять или комбинировать охранников в нестандартных приложениях.
123
123
124
+
## Session Guard
125
+
126
+
```php
127
+
use Sinbadxiii\PhalconAuth\Manager;
128
+
use App\Models\User;
129
+
use Sinbadxiii\PhalconAuth\Adapter\Model;
130
+
use Sinbadxiii\PhalconAuth\Guard\Session;
131
+
132
+
$auth = new Manager();
133
+
134
+
$configAdapter = [
135
+
'model' => User::class,
136
+
];
137
+
138
+
$adapter = new Model($this->getSecurity(), $configAdapter);
139
+
$guard = new Session(
140
+
$adapter,
141
+
$this->getSession(),
142
+
$this->getCookies(),
143
+
$this->getRequest(),
144
+
$this->getEventsManager()
145
+
);
146
+
147
+
$auth->addGuard("web", $guard, true);
148
+
149
+
return $auth;
150
+
```
151
+
152
+
- public function <b>__construct</b>(AdapterInterface $adapter, SessionManagerInterface $session,
153
+
Cookies $cookies, Request $request, EventsManagerInterface $eventsManager)
154
+
- public function <b>attempt</b>(array $credentials = [], $remember = false) - попытка аутентификации
155
+
- public function <b>user</b>() - получить аутентифицированного пользователя
156
+
- public function <b>validate</b>(array $credentials = []) - валидация входных данных
157
+
- public function <b>getName</b>() - получение имени сессии
158
+
- public function <b>getRememberName</b>() - имя куки при запомнить меня
159
+
- public function <b>login</b>(AuthenticatableInterface $user, bool $remember = false) - логин экземпляра пользователя
160
+
- public function <b>loginById</b>($id, bool $remember = false) - логин по Id пользователя
161
+
- public function <b>once</b>(array $credentials = []) - логин без сохранения пользователя в сессию
162
+
- public function <b>logout</b>() - выход
163
+
- public function <b>getLastUserAttempted</b>() - получение последнего попытавшегося залогиниться пользователя
164
+
- public function <b>viaRemember</b>() - проверка что пользователь был вытащен из Запомнить меня
165
+
- public function <b>getUser</b>() - получить пользователя
166
+
- public function <b>setRequest</b>(Request $request)
167
+
- public function <b>setSession</b>(SessionManagerInterface $session)
168
+
- public function <b>setCookies</b>(Cookies $cookies)
169
+
- public function <b>getAdapter</b>() - получить адаптер поставщика
170
+
- public function <b>setAdapter</b>(AdapterInterface $adapter) - назначить адаптера поставшика
171
+
172
+
Basic
173
+
174
+
- public function <b>basic</b>(string $field = 'email', array $extraConditions = []) - аутентификация через Basic Auth
175
+
- public function <b>onceBasic</b>(string $field = 'email', array $extraConditions = []) - аутентификация через Basic Auth без сохранения в сессию
176
+
177
+
## Token Guard
178
+
124
179
Чтобы воспользоваться `Sinbadxiii\PhalconAuth\Guard\Token`, необходимо в качестве второго аргумента передать конфиг с названиями имя параметра запроса и поля в хранилище данных пользователей, например, поле таблицы `users` в бд:
> Помните, что каждый ваш запрос к приложению, должен сопровождаться параметром `auth_token` с токеном доступа.
188
242
243
+
- public function <b>__construct</b>(AdapterInterface $adapter, array $config, Request $request)
244
+
- public function <b>user</b>() - аутентифицированный пользователь
245
+
- public function <b>validate</b>(array $credentials = []) - валидация
246
+
- public function <b>getTokenForRequest</b>() - поулчить токен из запросов (GET, POST, Headers)
247
+
- public function <b>setRequest</b>(Request $request)
248
+
- public function <b>getRequest</b>()
249
+
- public function <b>getAdapter</b>()
250
+
- public function <b>setAdapter</b>(AdapterInterface $adapter)
251
+
189
252
## Создание своего Охранника
190
253
191
254
```php
@@ -212,7 +275,7 @@ interface GuardInterface
212
275
213
276
## Access
214
277
215
-
С помощью Доступов (Access) вы можете задавать определенный доступ к тем или иным областям приложения, например в контроллер профиля пользователя разрешен доступ только аутентифицированным пользователям.
278
+
С помощью Доступов (Access) вы можете задавать и проверять требуемый доступ к тем или иным областям приложения, например в контроллер профиля пользователя разрешен доступ только аутентифицированным пользователям.
216
279
217
280
```php
218
281
<?php
@@ -306,7 +369,6 @@ class Guest extends AbstractAccess
306
369
}
307
370
}
308
371
```
309
-
310
372
В случае если метод `allowedIf()` вернет `true`, то пользователь сможет идти дальше, если же результат будет равен `false`, то сработает метод неудачи `redirectTo()`, и приложение перенаправит пользователя, т.к. у каждого приложение логика перенаправлений может быть разная, то вам следует создать свои классы Access `auth` и `guest`, наследовав от дефолтных классов и переопределить метод `redirectTo()`:
311
373
```php
312
374
<?php
@@ -343,7 +405,6 @@ class Guest extends GuestAccess
343
405
}
344
406
}
345
407
```
346
-
347
408
Чтобы создать свой Access, можно имплементировать интерфейс `Sinbadxiii\PhalconAuth\Access\AccessInterface`:
348
409
349
410
```php
@@ -477,9 +538,7 @@ $di->setShared('dispatcher', function () use ($di) {
477
538
return $dispatcher;
478
539
});
479
540
```
480
-
481
541
Свойство `$accessList` позволяет быстро добавлять новые уровни доступа в приложении, например, чтобы добавить новый доступ `admin`, достаточно создать класс с условием и добавить его в список `$accessList`:
$adapter = new \Sinbadxiii\PhalconAuth\Adapter\Memory($security);
922
-
$adapter->setModel(App\Models\UserSimple::class);
923
-
$adapter->setData($data);
924
-
925
-
$configGuard = [
926
-
'inputKey' => 'auth_token',
927
-
'storageKey' => 'auth_token',
928
-
];
929
1007
930
-
$guard = new \Sinbadxiii\PhalconAuth\Guard\Token(
931
-
$adapter,
932
-
$configGuard,
933
-
$this->getRequest()
934
-
);
935
-
936
-
$manager = new Manager();
937
-
$manager->addGuard("api", $guard, true);
938
-
939
-
return $manager;
940
-
});
941
-
```
942
-
943
-
- public <b>setData</b>(array $data) - массив с данными
944
-
- public <b>getData</b>() - получить массив с данными
945
1008
946
1009
> Не рекомендуется использовать адаптеры `stream` и `memory` в реальных приложениях из-за их функциональной ограниченности и сложности управления пользователями. Это может быть полезно в прототипах приложений и для ограниченных приложений, которые не хранят пользователей в базах данных.
947
1010
@@ -958,8 +1021,8 @@ use Sinbadxiii\PhalconAuth\AuthenticatableInterface;
958
1021
959
1022
interface AdapterInterface
960
1023
{
961
-
public function retrieveByCredentials(array $credentials);
962
-
public function retrieveById($id);
1024
+
public function findFirstByCredentials(array $credentials);
1025
+
public function findFirstById($id);
963
1026
public function validateCredentials(AuthenticatableInterface $user, array $credentials): bool;
964
1027
}
965
1028
```
@@ -979,7 +1042,7 @@ use Sinbadxiii\PhalconAuth\RememberTokenInterface;
979
1042
980
1043
interface AdapterWithRememberTokenInterface
981
1044
{
982
-
public function retrieveByToken($identifier, $token, $user_agent): ?AuthenticatableInterface;
1045
+
public function findFirstByToken($identifier, $token, $user_agent): ?AuthenticatableInterface;
983
1046
public function createRememberToken(RememberingInterface $user): RememberTokenInterface;
0 commit comments