|
1 | 1 | 1. Архитектура |
| 2 | + |
2 | 3 | Для добавления методов авторизации используется плагинная архитектура. Это сделано для того, чтобы очень быстро, практически не меняя существующий код внедрять новые методы авторизации. Новые методы внедряются с помощью наследованния от метакласса AuthMethod. Все остальное сделано по обычным паттернам. |
3 | 4 |
|
4 | 5 | 2. Регистрация через email |
5 | | -Чтобы зарегистрироваться через email надо дернуть ручку /email/registrate. Туда передается email и пароль через json. Регистрация через email доступна для незарегестрированных пользователей или для пользователей у которых определены методы регистрации, но не email. Возможны несколько исходов регистрации: |
6 | 6 |
|
7 | | -2.1 Успешно - 201 |
| 7 | +Чтобы зарегистрироваться через email надо дернуть ручку /email/registrate. Туда передается email и пароль через json. Регистрация через email доступна для незарегестрированных пользователей или для пользователей у которых определены методы регистрации, но не email. Возможны несколько исходов регистрации: |
8 | 8 |
|
9 | | -Если пользователь зарегестрирован. Ему отправляется письмо для подтверждения почты, где есть ссылка, переходя нна которую происходит подтверждение. |
| 9 | + 1. Успешно - 201 |
10 | 10 |
|
11 | | -2.2 Успешно - 200 |
| 11 | + Если пользователь зарегестрирован. Ему отправляется письмо для подтверждения почты, где есть ссылка, переходя нна которую происходит подтверждение. |
12 | 12 |
|
13 | | -Если пользщователь уже регестрировался, но не подтвердил свою почту. Ему отправляется повторное письмо, где есть новый линк. |
| 13 | + 2. Успешно - 200 |
| 14 | + |
| 15 | + Если пользщователь уже регестрировался, но не подтвердил свою почту. Ему отправляется повторное письмо, где есть новый линк. |
14 | 16 |
|
15 | | -2.3 AlreadyExists - 409 |
| 17 | + 3. AlreadyExists - 409 |
16 | 18 |
|
17 | | -Если пользователь уже зарегистрироваля и подтвердил почту. |
| 19 | + Если пользователь уже зарегистрироваля и подтвердил почту. |
18 | 20 |
|
19 | | -2.4 ObjectNotFound - 404 |
| 21 | + 4. ObjectNotFound - 404 |
20 | 22 |
|
21 | | -Если указано для какого пользователя добавить метод регистрации и этого пользователя не существует. |
| 23 | + Если указано для какого пользователя добавить метод регистрации и этого пользователя не существует. |
22 | 24 |
|
23 | | -2.5 SessionExpired - 403 |
| 25 | + 5. SessionExpired - 403 |
24 | 26 |
|
25 | | -Если указано для какого пользователя добавить метод регистрации, указана его сессия, которая, в свою очередь, протухла. |
| 27 | + Если указано для какого пользователя добавить метод регистрации, указана его сессия, которая, в свою очередь, протухла. |
26 | 28 |
|
27 | 29 | При любом исходе возвращает т.н ResponseModel = {status: str, message: str} |
28 | 30 |
|
29 | 31 | 3. Логин через email. |
30 | 32 |
|
31 | 33 | Чтобы залогиниться надо дернуть ручку email/login. Туда передается email, password. Что может быть, если дернуть ручку: |
32 | 34 |
|
33 | | -3.1 AuthFailed - 401 |
| 35 | + 1. AuthFailed - 401 |
34 | 36 |
|
35 | | -Если логин+пароль неправильный или если пользователь не подтвердил email. |
| 37 | + Если логин+пароль неправильный или если пользователь не подтвердил email. |
36 | 38 |
|
37 | | -3.2 Успешно - 200 |
| 39 | + 2. Успешно - 200 |
38 | 40 |
|
39 | | -Возвращает в таком случае объект UserSession = {id: int, token: str, expires: datetime} |
| 41 | + Возвращает в таком случае объект UserSession = {id: int, token: str, expires: datetime} |
40 | 42 |
|
41 | 43 | 4. Смена пароля |
42 | 44 |
|
43 | 45 | Чтобы поменять пароль, существует два варианта: либо поменять его из открытой сессии: нужен email, password, new_password, token, либо в случае забытого пароля можно пользоваться только email. |
44 | 46 |
|
45 | | -4.1 Восстановление без сессии |
| 47 | + 1. Восстановление без сессии |
46 | 48 |
|
47 | | -Надо дернуть ручку /email/password/reset/request, передать туда email. На почту приходит письмо со ссылкой на фронт, где можно поменять пароль, там есть reset_token в ссылке. Далее |
| 49 | + Надо дернуть ручку /email/password/reset/request, передать туда email. На почту приходит письмо со ссылкой на фронт, где можно поменять пароль, там есть reset_token в ссылке. Далее |
0 commit comments