Add new login page

pull/530/head
ibuler 2016-08-31 20:39:25 +08:00
parent d70deaf1ac
commit c9369db578
8 changed files with 8602 additions and 300 deletions

View File

@ -0,0 +1,26 @@
.red-fonts {
color: #ed5565;
}
.form-group.required .control-label:after {
content: " *";
color: red;
}
.n-invalid {border: 1px solid #f00;}
.primary-panel {
border-color: #1ab394;
border-style: solid;
border-width: 1px
}
.info-panel {
border-color: #23c6c8;
border-style: solid;
border-width: 1px
}
th a {
color: #676a6c;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -36,8 +36,6 @@
var csrftoken = getCookie('csrftoken'); var csrftoken = getCookie('csrftoken');
var sessionid = getCookie('sessionid'); var sessionid = getCookie('sessionid');
console.log(csrftoken);
console.log(sessionid);
function csrfSafeMethod(method) { function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection // these HTTP methods do not require CSRF protection

View File

@ -18,7 +18,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href=""> <a href="{% url 'users:logout' %}">
<i class="fa fa-sign-out"></i> Log out <i class="fa fa-sign-out"></i> Log out
</a> </a>
</li> </li>

View File

@ -1,5 +1,5 @@
{% load static %} {% load static %}
{% load bootstrap %} {#{% load bootstrap %}#}
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -9,40 +9,78 @@
<title> JumpServer </title> <title> JumpServer </title>
<link rel="shortcut icon" href="{% static "img/facio.ico" %}" type="image/x-icon"> <link rel="shortcut icon" href="{% static "img/facio.ico" %}" type="image/x-icon">
{% include '_head_css_js.html' %} {% include '_head_css_js.html' %}
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
<link href="{% static "css/style.css" %}" rel="stylesheet"> <link href="{% static "css/style.css" %}" rel="stylesheet">
<script src="{% static "js/base.js" %}"></script> <link href="{% static "css/animate.css" %}" rel="stylesheet">
<link href="{% static "css/font-awesome.css" %}" rel="stylesheet">
{# <script src="{% static "js/base.js" %}"></script>#}
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="middle-box text-center loginscreen animated fadeInDown">
<div>
<div>
<h1 class="logo-name"><img src="{% static "/img/logo.png" %}"></h1>
</div>
{% if error %}
<div class="alert alert-danger text-center">{{ error }}</div>
{% endif %}
<h2>Welcome to Jumpserver</h2>
<form class="m-t" role="form" method="post" action="">
{% csrf_token %}
<div class="form-group">
<input id="{{ form.username.id_for_label }}" name="{{ form.username.html_name }}" type="text" value="{{ user.username }}" class="form-control" placeholder="Username">
</div>
<div class="form-group"> <div class="loginColumns animated fadeInDown">
<input id="{{ form.password.id_for_label }}" name="{{ form.password.html_name }}" type="password" value="{{ user.password }}" class="form-control" placeholder="Password"> <div class="row">
</div>
<div class="col-md-6">
<h2 class="font-bold">Welcome to IN+</h2>
<p>
Perfectly designed and precisely prepared admin theme with over 50 pages with extra new web app views.
</p>
<p>
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.
</p>
<p>
When an unknown printer took a galley of type and scrambled it to make a type specimen book.
</p>
<p>
<small>It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</small>
</p>
</div>
<div class="col-md-6">
<div class="ibox-content">
<form class="m-t" role="form" action="index.html">
<div class="form-group">
<input type="email" class="form-control" placeholder="Username" required="">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Password" required="">
</div>
<button type="submit" class="btn btn-primary block full-width m-b">Login</button> <button type="submit" class="btn btn-primary block full-width m-b">Login</button>
<a href=""><small>Forgot password? </small></a> <a href="#">
</form> <small>Forgot password?</small>
<p class="m-t"> <small><b>Copyright</b> Jumpserver.org Organization © 2014-2015</small> </p> </a>
</div>
</div>
{% include '_foot_js.html' %} <p class="text-muted text-center">
<small>Do not have an account?</small>
</p>
<a class="btn btn-sm btn-white btn-block" href="register.html">Create an account</a>
</form>
<p class="m-t">
<small>Inspinia we app framework base on Bootstrap 3 &copy; 2014</small>
</p>
</div>
</div>
</div>
<hr/>
<div class="row">
<div class="col-md-6">
Copyright Example Company
</div>
<div class="col-md-6 text-right">
<small>© 2014-2015</small>
</div>
</div>
</div>
</body> </body>
</html> </html>

View File

@ -1,23 +1,26 @@
from django.conf.urls import url from django.conf.urls import url
from django.contrib.auth import views as auth_views
from .views import UserListView, UserAddView, UserUpdateView, UserDeleteView, UserDetailView, UserLoginView import views
from .views import UserGroupListView, UserGroupAddView, UserGroupUpdateView, UserGroupDeleteView, UserGroupDetailView
import api import api
app_name = 'users' app_name = 'users'
urlpatterns = [ urlpatterns = [
url(r'^login/$', UserLoginView.as_view(), name='login'), url(r'^login$', auth_views.login, {'template_name': 'users/login.html'}, name='login'),
url(r'^users/$', UserListView.as_view(), name='user-list'), url(r'^logout$', auth_views.logout, {'template_name': 'users/login.html'}, name='logout'),
url(r'^users/(?P<pk>[0-9]+)/$', UserDetailView.as_view(), name='user-detail'), url(r'^password/forget-password$', views.UserForgetPasswordView.as_view(), name='forget-password'),
url(r'^users/add/$', UserAddView.as_view(), name='user-add'), url(r'^password/reset-password$', views.UserRestPasswordView.as_view(), name='reset-password'),
url(r'^users/(?P<pk>[0-9]+)/edit/$', UserUpdateView.as_view(), name='user-edit'), url(r'^users$', views.UserListView.as_view(), name='user-list'),
url(r'^users/(?P<pk>[0-9]+)/delete/$', UserDeleteView.as_view(), name='user-delete'), url(r'^users/(?P<pk>[0-9]+)$', views.UserDetailView.as_view(), name='user-detail'),
url(r'^usergroups/$', UserGroupListView.as_view(), name='usergroup-list'), url(r'^users/add$', views.UserAddView.as_view(), name='user-add'),
url(r'^usergroups/(?P<pk>[0-9]+)/$', UserGroupDetailView.as_view(), name='usergroup-detail'), url(r'^users/(?P<pk>[0-9]+)/edit$', views.UserUpdateView.as_view(), name='user-edit'),
url(r'^usergroups/add/$', UserGroupAddView.as_view(), name='usergroup-add'), url(r'^users/(?P<pk>[0-9]+)/delete$', views.UserDeleteView.as_view(), name='user-delete'),
url(r'^usergroups/(?P<pk>[0-9]+)/edit/$', UserGroupUpdateView.as_view(), name='usergroup-edit'), url(r'^usergroups$', views.UserGroupListView.as_view(), name='usergroup-list'),
url(r'^usergroups/(?P<pk>[0-9]+)/delete/$', UserGroupDeleteView.as_view(), name='usergroup-delete'), url(r'^usergroups/(?P<pk>[0-9]+)$', views.UserGroupDetailView.as_view(), name='usergroup-detail'),
url(r'^usergroups/add/$', views.UserGroupAddView.as_view(), name='usergroup-add'),
url(r'^usergroups/(?P<pk>[0-9]+)/edit$', views.UserGroupUpdateView.as_view(), name='usergroup-edit'),
url(r'^usergroups/(?P<pk>[0-9]+)/delete$', views.UserGroupDeleteView.as_view(), name='usergroup-delete'),
] ]

View File

@ -8,7 +8,7 @@ from django.shortcuts import get_object_or_404, reverse, render
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.db.models import Q from django.db.models import Q
from django.views.generic.base import TemplateResponseMixin from django.views.generic.base import View
from django.views.generic.list import ListView from django.views.generic.list import ListView
from django.views.generic.edit import CreateView, DeleteView, UpdateView, ProcessFormView, FormView from django.views.generic.edit import CreateView, DeleteView, UpdateView, ProcessFormView, FormView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
@ -203,3 +203,11 @@ class UserGroupDetailView(DetailView):
class UserGroupDeleteView(DeleteView): class UserGroupDeleteView(DeleteView):
pass pass
class UserForgetPasswordView(View):
pass
class UserRestPasswordView(View):
pass