NoteApi

Форк
0
/
__init__.py 
56 строк · 1.7 Кб
1
import logging
2
from config import Config
3
from flask import Flask, g
4
from flask_restful import Api, Resource, abort, reqparse, request
5
from flask_sqlalchemy import SQLAlchemy
6
from flask_migrate import Migrate
7
from flask_marshmallow import Marshmallow
8
from flask_httpauth import HTTPBasicAuth
9
from flask_apispec.extension import FlaskApiSpec
10
from flask_mail import Mail, Message
11
from flask_babel import Babel
12

13
app = Flask(__name__, static_folder=Config.UPLOAD_FOLDER)
14

15
app.config.from_object(Config)
16

17
api = Api(app)
18
db = SQLAlchemy(app)
19
migrate = Migrate(app, db)
20
ma = Marshmallow(app)
21
auth = HTTPBasicAuth()
22
docs = FlaskApiSpec(app)
23
mail = Mail(app)
24
babel = Babel(app)
25

26
logging.basicConfig(filename='record.log',
27
                    level=logging.INFO,
28
                    format=f'%(asctime)s %(levelname)s %(name)s : %(message)s')
29
app.logger.setLevel(logging.INFO)
30
logging.getLogger('werkzeug').setLevel(logging.WARNING)
31

32

33
@babel.localeselector
34
def get_locale():
35
    return request.accept_languages.best_match(app.config['LANGUAGES'])
36

37

38
@auth.verify_password
39
def verify_password(username_or_token, password):
40
    from api.models.user import UserModel
41
    # сначала проверяем authentication token
42
    # print("username_or_token = ", username_or_token)
43
    # print("password = ", password)
44
    user = UserModel.verify_auth_token(username_or_token)
45
    if not user:
46
        # потом авторизация
47
        user = UserModel.query.filter_by(username=username_or_token).first()
48
        if not user or not user.verify_password(password):
49
            return False
50
    g.user = user
51
    return True
52

53

54
@auth.get_user_roles
55
def get_user_roles(user):
56
    return g.user.get_roles()
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.