#!/usr/bin/env python
# -*- coding: utf-8 -*-
# **************************************************************************
# Copyright © 2019 jianglin
# File Name: router.py
# Author: jianglin
# Email: mail@honmaple.com
# Created: 2017-03-13 20:34:52 (CST)
# Last Update: Monday 2019-01-07 14:58:51 (CST)
#          By:
# Description:
# **************************************************************************
from flask import request
from flask.views import MethodView
from flask_login import login_user, logout_user, login_required
from flask_maple.response import HTTP
from storage.auth.model import User
from storage.serializer import UserSerializer


class LoginView(MethodView):
    def post(self):
        '''
        登陆
        '''
        post_data = request.data
        username = post_data.pop('username', None)
        password = post_data.pop('password', None)
        remember = post_data.pop('remember', True)
        if username and password:
            user = User.query.filter_by(username=username).first()
            if user and user.check_password(password):
                user.login(remember)
                serializer = UserSerializer(user)
                return HTTP.OK(data=serializer.data)
        return HTTP.UNAUTHORIZED(message='用户名或密码错误')


class LogoutView(MethodView):
    @login_required
    def get(self):
        user = request.user
        user.logout()
        return HTTP.OK(message='登出成功')