a64e17aa by 周伟奇

admin test

1 parent 7c9969e6
...@@ -6,6 +6,9 @@ from common import response ...@@ -6,6 +6,9 @@ from common import response
6 from common.redis_cache import redis_handler as rh 6 from common.redis_cache import redis_handler as rh
7 from .consts import LOGIN_TIMES_LIMIT_EXPIRES, LOGIN_TIMES_LIMIT 7 from .consts import LOGIN_TIMES_LIMIT_EXPIRES, LOGIN_TIMES_LIMIT
8 from settings import conf 8 from settings import conf
9 from django.urls import reverse
10 from django.http import HttpResponseRedirect
11 from django.contrib.auth import login as auth_login
9 12
10 # Create your views here. 13 # Create your views here.
11 14
...@@ -51,20 +54,34 @@ class LoginView(ObtainJSONWebToken, GenericView): ...@@ -51,20 +54,34 @@ class LoginView(ObtainJSONWebToken, GenericView):
51 class IWALoginView(IWABaseView, GenericView): 54 class IWALoginView(IWABaseView, GenericView):
52 55
53 def post(self, request, *args, **kwargs): 56 def post(self, request, *args, **kwargs):
54 code = request.data.get('code', '') 57 # code = request.data.get('code', '')
55 # redirect_uri = request.data.get('redirect_uri', '') 58 is_admin = request.data.get('state', '') == 'admin'
56 iwa_res = self.get_q_number(conf.IWA_URL, code, conf.IWA_REDIRECT_URI, client_id_base64) 59 # q_number = self.get_q_number(conf.IWA_URL, code, conf.IWA_REDIRECT_URI, client_id_base64)
57 q_number = iwa_res.get('sub', '')
58 self.running_log.info('iwa_res: {0}'.format(iwa_res))
59 60
60 is_valid, data = self.validate(q_number) 61 q_number = 'zwq'
61 62
62 self.running_log.info('[users.iwalogin] [username: {0}] [params: {1}]'.format(q_number, request.data)) 63 if is_admin:
63 64
64 if is_valid: 65 self.running_log.info('[admin_users.iwalogin] [username: {0}] [params: {1}]'.format(q_number, request.data))
65 return response.ok(data=data) 66
67 is_valid, data = self.validate_admin(q_number)
68
69 if is_valid:
70 auth_login(request, data)
71 index_path = reverse('admin:index')
72 return HttpResponseRedirect(index_path)
73 else:
74 self.no_permission(data)
66 else: 75 else:
67 self.no_permission(data) 76
77 self.running_log.info('[users.iwalogin] [username: {0}] [params: {1}]'.format(q_number, request.data))
78
79 is_valid, data = self.validate(q_number)
80
81 if is_valid:
82 return response.ok(data=data)
83 else:
84 self.no_permission(data)
68 85
69 86
70 class IWAUrlView(IWABaseView, GenericView): 87 class IWAUrlView(IWABaseView, GenericView):
......
1 from django.contrib import admin 1 from django.contrib import admin
2 from django.urls import reverse
2 from django.views.decorators.cache import never_cache 3 from django.views.decorators.cache import never_cache
3 from django.http import HttpResponseRedirect 4 from django.http import HttpResponseRedirect
4 from settings import conf 5 from settings import conf
...@@ -21,7 +22,12 @@ class MyAdminSite(admin.AdminSite): ...@@ -21,7 +22,12 @@ class MyAdminSite(admin.AdminSite):
21 22
22 @never_cache 23 @never_cache
23 def login(self, request, extra_context=None): 24 def login(self, request, extra_context=None):
24 return HttpResponseRedirect(iwa_admin_url) 25 if request.method == 'GET' and self.has_permission(request):
26 # Already logged-in, redirect to admin index
27 index_path = reverse('admin:index', current_app=self.name)
28 return HttpResponseRedirect(index_path)
29 # return HttpResponseRedirect(iwa_admin_url)
30 return HttpResponseRedirect('https://staging-bmw-ocr.situdata.com/login?state=admin')
25 31
26 32
27 admin_site = MyAdminSite() 33 admin_site = MyAdminSite()
......
...@@ -135,7 +135,7 @@ class IWABaseView: ...@@ -135,7 +135,7 @@ class IWABaseView:
135 iwa_user_url = '{0}intranetb2x/userinfo'.format(iwa_url_base) 135 iwa_user_url = '{0}intranetb2x/userinfo'.format(iwa_url_base)
136 res = requests.get(iwa_user_url, headers=headers) 136 res = requests.get(iwa_user_url, headers=headers)
137 137
138 return res.json() 138 return res.json().get('sub', '')
139 139
140 @staticmethod 140 @staticmethod
141 def validate(q_number): 141 def validate(q_number):
...@@ -159,3 +159,22 @@ class IWABaseView: ...@@ -159,3 +159,22 @@ class IWABaseView:
159 else: 159 else:
160 msg = 'q_number user not found' 160 msg = 'q_number user not found'
161 return False, msg 161 return False, msg
162
163 @staticmethod
164 def validate_admin(q_number):
165 if not q_number:
166 return False, 'get q_number empty'
167 user = get_user_model().objects.filter(username=q_number).first()
168 if user:
169 if not user.is_active:
170 msg = 'User account is disabled.'
171 return False, msg
172
173 if not user.is_superuser:
174 msg = 'User account is not admin user'
175 return False, msg
176
177 return True, user
178 else:
179 msg = 'q_number user not found'
180 return False, msg
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!