From 5359da3ce28bb6a5a7592964ac126ac9f6167f7a Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 31 Aug 2016 23:42:06 +0800 Subject: [PATCH] Finish user login --- apps/jumpserver/settings.py | 4 +++ apps/jumpserver/urls.py | 2 +- apps/static/img/logo.png | Bin 6116 -> 16275 bytes apps/users/templates/users/login.html | 35 ++++++++++-------- apps/users/views.py | 50 +++++++++++++------------- 5 files changed, 50 insertions(+), 41 deletions(-) diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index edb47798b..7d868f3e3 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -13,6 +13,8 @@ https://docs.djangoproject.com/en/1.10/ref/settings/ import os import sys +from django.urls import reverse_lazy + # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PROJECT_DIR = os.path.dirname(BASE_DIR) @@ -98,6 +100,8 @@ TEMPLATES = [ # WSGI_APPLICATION = 'jumpserver.wsgi.application' +LOGIN_REDIRECT_URL = reverse_lazy('index') + # Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases diff --git a/apps/jumpserver/urls.py b/apps/jumpserver/urls.py index eb4f4e80e..138ea6d5a 100644 --- a/apps/jumpserver/urls.py +++ b/apps/jumpserver/urls.py @@ -27,7 +27,7 @@ from django.http import HttpResponseRedirect urlpatterns = [ - url(r'^$', TemplateView.as_view(template_name='base.html')), + url(r'^$', TemplateView.as_view(template_name='base.html'), name='index'), url(r'^(api/)?users/', include('users.urls')), url(r'^assets/', include('assets.urls')), url(r'^terminal/', include('webterminal.urls')), diff --git a/apps/static/img/logo.png b/apps/static/img/logo.png index 0d8ff20a6b7ad21f50bd998736adec930b76b30c..f3cf2d261ad53ea64351c7c4aafa097d13061837 100644 GIT binary patch literal 16275 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͘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 @@ -14,7 +13,7 @@ -{# #} + @@ -23,33 +22,39 @@
-

Welcome to IN+

+ +

欢迎使用Jumpserver开源跳板机

- Perfectly designed and precisely prepared admin theme with over 50 pages with extra new web app views. + Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理

- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s. + 我们自五湖四海,我们对开源精神无比敬仰和崇拜,我们对完美、整洁、优雅 无止境的追求

- When an unknown printer took a galley of type and scrambled it to make a type specimen book. + 专注自动化运维,努力打造 易用、稳定、安全、自动化 的跳板机, 这是我们的不懈的追求和动力

- It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. + 永远年轻,永远热泪盈眶 stay foolish stay hungry

-
+
登录
+ + {% csrf_token %} + {% if form.errors %} +

用户名/密码 不正确, 请重试

+ {% endif %}
- +
- +
@@ -58,12 +63,12 @@

- Do not have an account? +{# Do not have an account?#}

- Create an account +{# Create an account#}

- Inspinia we app framework base on Bootstrap 3 © 2014 +{# Inspinia we app framework base on Bootstrap 3 © 2014#}

@@ -71,10 +76,10 @@
- Copyright Example Company + Copyright Jumpserver.org
- © 2014-2015 + © 2014-2016
diff --git a/apps/users/views.py b/apps/users/views.py index 55b834fac..136957839 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -24,31 +24,31 @@ from .utils import AdminUserRequiredMixin, ssh_key_gen logger = logging.getLogger('jumpserver.users.views') -class UserLoginView(FormView): - template_name = 'users/login.html' - form_class = UserLoginForm - success_url = reverse_lazy('users:user-list') - - def get(self, request, *args, **kwargs): - if self.request.user.is_staff: - return HttpResponseRedirect(reverse('users:user-list')) - return super(UserLoginView, self).get(request, *args, **kwargs) - - def form_valid(self, form): - username = form.cleaned_data.get('username', '') - password = form.cleaned_data.get('password', '') - - user = authenticate(username=username, password=password) - if user is not None and user.is_staff: - login(self.request, user) - return HttpResponseRedirect(self.success_url) - - logger.warning('Login user [%(username)s] password error' % {'username': username}) - return render(self.request, self.template_name, context={'form': form, 'error': '密码错误'}) - - def form_invalid(self, form): - logger.warning('Login form commit invalid.') - return super(UserLoginView, self).form_invalid(form) +# class UserLoginView(FormView): +# template_name = 'users/login.html' +# form_class = UserLoginForm +# success_url = reverse_lazy('users:user-list') +# +# def get(self, request, *args, **kwargs): +# if self.request.user.is_staff: +# return HttpResponseRedirect(reverse('users:user-list')) +# return super(UserLoginView, self).get(request, *args, **kwargs) +# +# def form_valid(self, form): +# username = form.cleaned_data.get('username', '') +# password = form.cleaned_data.get('password', '') +# +# user = authenticate(username=username, password=password) +# if user is not None and user.is_staff: +# login(self.request, user) +# return HttpResponseRedirect(self.success_url) +# +# logger.warning('Login user [%(username)s] password error' % {'username': username}) +# return render(self.request, self.template_name, context={'form': form, 'error': '密码错误'}) +# +# def form_invalid(self, form): +# logger.warning('Login form commit invalid.') +# return super(UserLoginView, self).form_invalid(form) class UserListView(AdminUserRequiredMixin, ListView):