登录接口

2018-03-06  本文已影响0人  徐德东

# django lib

from django.views.generic import View

from django.shortcuts import HttpResponse

from django.contrib import auth

from braces.views import JSONRequestResponseMixin

# local lib

from checkparams import CheckParams

from response import Response

import local_settings as lset

class LoginView(JSONRequestResponseMixin, View, CheckParams, Response):

    """ 登录视图 """

    @staticmethod

    def get_user_level(user):

        """ 获得用户的权限等级 """

        if user.is_superuser:

            level =3

        elif user.is_staff:

            level =2

        else:

            level =1

        return level

    def post(self, request):

        """ 需要用到request_json,因为传进来的json格式的数据,而不是form表单,使用request.POST获取不到参数 """

        standard_list = ["username", "password"]

        params_dict =self.request_json

        dest_list = params_dict.keys()

        res =self.check_params(standard_list, dest_list)

        if not res:

            return HttpResponse(self.error(lset.PARAMS_NOT_RIGHT, lset.PARAMS_NOT_RIGHT_MSG))

        username = params_dict.get("username", "").strip()

        password = params_dict.get("password", "").strip()

        user = auth.authenticate(username=username, password=password)

        if useris not None:

            auth.login(request, user)

            session_key = request.session.session_key

            request.session[session_key] = username

            email = user.email

            name = user.last_name + user.first_name

            if not name:

                name = user.username

            level =self.get_user_level(user)

            data = {"__token__": request.session.session_key, "name": name, "level": level, "email": email}

            return HttpResponse(self.success(data))

        else:

            return HttpResponse(self.error(lset.USER_PASS_NOT_MATCH, lset.USER_PASS_NOT_MATCH_MSG))

其中checkparams,response, local_settings 都是自己写的模块

上一篇 下一篇

猜你喜欢

热点阅读