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 class="loginColumns animated fadeInDown">
<div> <div class="row">
<h1 class="logo-name"><img src="{% static "/img/logo.png" %}"></h1>
<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>
{% if error %} <div class="col-md-6">
<div class="alert alert-danger text-center">{{ error }}</div> <div class="ibox-content">
{% endif %} <form class="m-t" role="form" action="index.html">
<h2>Welcome to Jumpserver</h2> <div class="form-group">
<form class="m-t" role="form" method="post" action=""> <input type="email" class="form-control" placeholder="Username" required="">
{% csrf_token %} </div>
<div class="form-group"> <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"> <input type="password" class="form-control" placeholder="Password" required="">
</div>
<button type="submit" class="btn btn-primary block full-width m-b">Login</button>
<a href="#">
<small>Forgot password?</small>
</a>
<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>
<div class="form-group"> </div>
<input id="{{ form.password.id_for_label }}" name="{{ form.password.html_name }}" type="password" value="{{ user.password }}" class="form-control" placeholder="Password"> <hr/>
</div> <div class="row">
<div class="col-md-6">
<button type="submit" class="btn btn-primary block full-width m-b">Login</button> Copyright Example Company
</div>
<a href=""><small>Forgot password? </small></a> <div class="col-md-6 text-right">
</form> <small>© 2014-2015</small>
<p class="m-t"> <small><b>Copyright</b> Jumpserver.org Organization © 2014-2015</small> </p> </div>
</div> </div>
</div> </div>
{% include '_foot_js.html' %}
</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