94 lines
3.6 KiB
Python
94 lines
3.6 KiB
Python
from bs4 import BeautifulSoup
|
||
from requests import Session, post
|
||
import json
|
||
from Eljur.errors import _checkStatus, _checkSubdomain, _findData
|
||
|
||
|
||
class Authorization:
|
||
def login(self, subdomain, data):
|
||
"""
|
||
Подключение к пользователю eljur.ru.
|
||
|
||
# :param subdomain: Поддомен eljur.ru // str
|
||
:param data: Дата, состоящая из {"username": "ваш логин",
|
||
"password": "ваш пароль"} // dict
|
||
|
||
:return: Словарь с ошибкой или с положительным ответом: // dict
|
||
answer // dict
|
||
session // Session
|
||
subdomain // str
|
||
result // bool
|
||
"""
|
||
|
||
subdomain = _checkSubdomain(subdomain)
|
||
if "error" in subdomain:
|
||
return subdomain
|
||
|
||
session = Session()
|
||
url = f"https://{subdomain}.eljur.ru/ajaxauthorize"
|
||
err = session.post(url=url, data=data)
|
||
|
||
checkStatus = _checkStatus(err, url)
|
||
if "error" in checkStatus:
|
||
return checkStatus
|
||
del checkStatus
|
||
|
||
if not err.json()["result"]:
|
||
return {"error": {"error_code": -103,
|
||
"error_msg": err.json()['error'],
|
||
"full_error": err.json()}}
|
||
del err
|
||
|
||
url = f"https://{subdomain}.eljur.ru/?show=home"
|
||
account = session.get(url=url)
|
||
checkStatus = _checkStatus(account, url)
|
||
if "error" in checkStatus:
|
||
return checkStatus
|
||
|
||
soup = BeautifulSoup(account.text, 'lxml')
|
||
|
||
sentryData = _findData(soup)
|
||
del soup
|
||
if not sentryData:
|
||
return {"error": {"error_code": -104,
|
||
"error_msg": "Данные о пользователю не найдены."}}
|
||
|
||
return {"answer": json.loads(sentryData[17:-1]),
|
||
"session": session,
|
||
"subdomain": subdomain,
|
||
"result": True}
|
||
|
||
def recover(self, subdomain, email):
|
||
"""
|
||
Восстановление пароль пользователю eljur.ru. через почту.
|
||
|
||
Внимание! Для использования данные функции требуется привязать почту.
|
||
В ином случае восстановление происходит через Администратора или другого лица вашей школы.
|
||
|
||
:param subdomain: Домен вашей школы. // str
|
||
:param email: Ваша почта, привязанная к аккаунту eljur // str
|
||
|
||
:return: Словарь с ошибкой или с положительным ответом: // dict
|
||
answer // dict
|
||
result // bool
|
||
"""
|
||
|
||
subdomain = _checkSubdomain(subdomain)
|
||
if "error" in subdomain:
|
||
return subdomain
|
||
|
||
url = f"https://{subdomain}.eljur.ru/ajaxrecover"
|
||
answer = post(url=url,
|
||
data={"email": email})
|
||
|
||
checkStatus = _checkStatus(answer, url)
|
||
if "error" in checkStatus:
|
||
return checkStatus
|
||
|
||
if not answer.json()["result"]:
|
||
return {"error": {"error_code": -105,
|
||
"error_msg": answer.json()['error'],
|
||
"full_error": answer.json()}}
|
||
return {"answer": "Сообщение успешно отправлено на почту.",
|
||
"result": True}
|