|
# -*- coding: utf-8 -*-
import shortuuid
from django.conf import settings
from django_response import response
from json_render import json_render
from guideline.models import ScreenAdminInfo
from utils.error.errno_utils import PermissionStatusCode
from utils.redis.connect import r
from utils.redis.rkeys import SCREEN_ADMIN_LOGIN
def screen_admin_oauthqr(request):
brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
return json_render(request, 'page/screen_admin_oauth_qrcode.html', unjsondumpsdict={
'qr': settings.KODO_SCREEN_AUTH_URL.format(brand_id)
})
def screen_admin_oauth(request):
brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
unionid = request.GET.get('unionid', '')
openid = request.GET.get('openid', '')
ScreenAdminInfo.objects.update_or_create(brand_id=brand_id, unionid=unionid, openid=openid, defaults={
'nickname': request.GET.get('nickname', ''),
'avatar': request.GET.get('avatar', '') or request.GET.get('headimgurl', ''),
'user_status': ScreenAdminInfo.ACTIVATED,
})
return json_render(request, 'page/screen_admin_oauth_success.html', unjsondumpsdict={
})
def screen_admin_loginqr(request):
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
token = shortuuid.uuid()
return response(200, data={
'qr': settings.KODO_SCREEN_LOGIN_URL.format(brand_id, token),
'token': token,
})
def screen_admin_login(request):
brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
unionid = request.GET.get('unionid', '')
openid = request.GET.get('openid', '')
token = request.GET.get('token', '')
try:
admin = ScreenAdminInfo.objects.get(unionid=unionid, user_status=ScreenAdminInfo.ACTIVATED)
except ScreenAdminInfo.DoesNotExist:
return json_render(request, 'page/screen_admin_login_fail.html', unjsondumpsdict={
})
r.setex(SCREEN_ADMIN_LOGIN % (brand_id, token), r.REDIS_EXPIRED_HALF_HOUR, unionid)
return json_render(request, 'page/screen_admin_login_success.html', unjsondumpsdict={
})
def screen_admin_loginrst(request):
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
token = request.POST.get('token', '')
unionid, _ = r.getdelete(SCREEN_ADMIN_LOGIN % (brand_id, token))
try:
admin = ScreenAdminInfo.objects.get(unionid=unionid, user_status=ScreenAdminInfo.ACTIVATED)
except ScreenAdminInfo.DoesNotExist:
return response(PermissionStatusCode.PERMISSION_DENIED)
return response(200, data={
'info': admin.data,
})
|