#!/usr/bin/env python3 import datetime from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity from flask_restful import Resource from flask import request, current_app, abort from config import ENCODED_SECRET_KEY from schemas import UserSchema, ListSchema, TrackSchema from aes_encrypt import EncryptedUserRedis """ Flask Restful endpoints """ __author__ = '@tormakris' __copyright__ = "Copyright 2020, onSpot Team" __module_name__ = "resources" __version__text__ = "1" INVALID_JSON_SCHEMA_MSG = "invalid json schema" class LoginApi(Resource): """ See: https://swagger.kmlabz.com/?urls.primaryName=onSpot%20Backend#/backend/logon """ userschema = UserSchema(many=False) encryptor = EncryptedUserRedis(ENCODED_SECRET_KEY) def post(self): body = request.get_json() try: userobj = self.userschema.load(body) except Exception as e: current_app.logger.warning(e) abort(417, INVALID_JSON_SCHEMA_MSG) self.encryptor.store(userobj) expires = datetime.timedelta(days=7) access_token = create_access_token(identity=str(userobj['name']), expires_delta=expires) return {'token': access_token}, 200