fga-eps-mds/2020.2-Anunbis

View on GitHub
app/controller/auth_resources.py

Summary

Maintainability
A
0 mins
Test Coverage
from flask_restful import Resource
from flask import request, make_response, jsonify, redirect, current_app
from ..schemas import user_schema
from ..services import auth_services, user_services
from ..docs import auth
from flasgger import swag_from


class LoginList(Resource):
    @swag_from(auth.login_list_post)
    def post(self):
        ls = user_schema.UserSchema()
        user = ls.load(request.json)
        user, status_code = auth_services.auth_user(user)
        return make_response(jsonify(user), status_code)


class EmailVerifyList(Resource):
    @swag_from(auth.email_verify_get)
    def get(self):
        token_sended = request.args.get("token")
        message = auth_services.active_email_user(token_sended)
        if message:
            message["contact_us"] = current_app.config["ANUNBIS_FRONTEND_URI"]
            return make_response(jsonify(message), 400)
        else:
            return redirect(current_app.config["ANUNBIS_FRONTEND_URI"])

    @swag_from(auth.email_verify_post)
    def post(self):
        email = user_schema.UserSchema(only=["email"]).load(request.json)
        user_db = user_services.get(**email)
        if user_db:
            message, status_code = auth_services.resend_verify_email(user_db)
            return make_response(jsonify(message), status_code)
        else:
            return make_response(jsonify({"message": "User not found!"}), 404)


def configure(api):
    api.add_resource(LoginList, "login")
    api.add_resource(EmailVerifyList, "auth/email")