Accept Merge Request #10 : (sxw-dev -> dev)
Merge Request: 添加了登陆,修改密码,注册三个页面的csrf; 添加了usernameCheck的valuedation检测方法; urls.py 添加了register,change_password页面。 Created By: @esp Accepted By: @esp URL: https://coding.net/u/virusdefender/p/qduoj/git/merge/10
This commit is contained in:
@@ -10,6 +10,8 @@ urlpatterns = [
|
|||||||
url(r'^docs/', include('rest_framework_swagger.urls')),
|
url(r'^docs/', include('rest_framework_swagger.urls')),
|
||||||
url(r'^admin/$', TemplateView.as_view(template_name="admin/index.html"), name="admin_index_page"),
|
url(r'^admin/$', TemplateView.as_view(template_name="admin/index.html"), name="admin_index_page"),
|
||||||
url(r'^login/$', TemplateView.as_view(template_name="oj/account/login.html"), name="user_login_page"),
|
url(r'^login/$', TemplateView.as_view(template_name="oj/account/login.html"), name="user_login_page"),
|
||||||
|
url(r'^register/$', TemplateView.as_view(template_name="oj/account/register.html"), name="user_register_page"),
|
||||||
|
url(r'^change_password/$', TemplateView.as_view(template_name="oj/account/change_password.html"), name="user_change_password_page"),
|
||||||
url(r'^api/login/$', UserLoginAPIView.as_view(), name="user_login_api"),
|
url(r'^api/login/$', UserLoginAPIView.as_view(), name="user_login_api"),
|
||||||
url(r'^api/register/$', UserRegisterAPIView.as_view(), name="user_register_api"),
|
url(r'^api/register/$', UserRegisterAPIView.as_view(), name="user_register_api"),
|
||||||
url(r'^api/change_password/$', UserChangePasswordAPIView.as_view(), name="user_change_password_api"),
|
url(r'^api/change_password/$', UserChangePasswordAPIView.as_view(), name="user_change_password_api"),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
require(["jquery", "bs_alert", "csrf", "validation"], function($, bs_alert, csrfHeader){
|
||||||
|
|
||||||
|
|
||||||
$("#change_password-form").formValidation({
|
$("#change_password-form").formValidation({
|
||||||
@@ -69,6 +69,7 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
|||||||
var new_password = $("#new_password ").val();
|
var new_password = $("#new_password ").val();
|
||||||
var password = $("#password").val();
|
var password = $("#password").val();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
beforeSend: csrfHeader,
|
||||||
url: "/api/change_password/",
|
url: "/api/change_password/",
|
||||||
data: {username: username, new_password: new_password , old_password : password},
|
data: {username: username, new_password: new_password , old_password : password},
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
require(["jquery", "bs_alert", "csrf", "validation"], function($, bs_alert, csrfHeader){
|
||||||
$("#login-form")
|
$("#login-form")
|
||||||
.formValidation({
|
.formValidation({
|
||||||
framework: "bootstrap",
|
framework: "bootstrap",
|
||||||
@@ -24,6 +24,7 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
|||||||
var username = $("#username").val();
|
var username = $("#username").val();
|
||||||
var password = $("#password").val();
|
var password = $("#password").val();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
beforeSend: csrfHeader,
|
||||||
url: "/api/login/",
|
url: "/api/login/",
|
||||||
data: {username: username, password: password},
|
data: {username: username, password: password},
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
require(["jquery", "bs_alert", "csrf", "validation"], function($, bs_alert, csrfHeader){
|
||||||
|
|
||||||
$("#register-form")
|
$("#register-form")
|
||||||
.formValidation({
|
.formValidation({
|
||||||
@@ -13,6 +13,9 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
|||||||
min: 3,
|
min: 3,
|
||||||
max: 30,
|
max: 30,
|
||||||
message: '用户名长度必须在3到30位之间'
|
message: '用户名长度必须在3到30位之间'
|
||||||
|
},
|
||||||
|
usernameCheck:{
|
||||||
|
message: '用户名已存在'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -75,6 +78,7 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
|||||||
var real_name = $("#real_name").val();
|
var real_name = $("#real_name").val();
|
||||||
var password = $("#password").val();
|
var password = $("#password").val();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
beforeSend: csrfHeader,
|
||||||
url: "/api/register/",
|
url: "/api/register/",
|
||||||
data: {username: username, real_name: real_name, password: password},
|
data: {username: username, real_name: real_name, password: password},
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ var require = {
|
|||||||
bs_alert: "utils/bs_alert",
|
bs_alert: "utils/bs_alert",
|
||||||
submit_code: "app/oj/problem/submit_code",
|
submit_code: "app/oj/problem/submit_code",
|
||||||
contest: "app/admin/contest/contest",
|
contest: "app/admin/contest/contest",
|
||||||
|
csrf: "utils/csrf",
|
||||||
|
|
||||||
//formValidation 不要在代码中单独使用,而是使用和修改utils/validation
|
//formValidation 不要在代码中单独使用,而是使用和修改utils/validation
|
||||||
base: "lib/formValidation/base",
|
base: "lib/formValidation/base",
|
||||||
@@ -26,7 +27,7 @@ var require = {
|
|||||||
"validator/integer": "lib/formValidation/validator/integer",
|
"validator/integer": "lib/formValidation/validator/integer",
|
||||||
"validator/between": "lib/formValidation/validator/between",
|
"validator/between": "lib/formValidation/validator/between",
|
||||||
'validator/confirm':"lib/formValidation/validator/confirm",
|
'validator/confirm':"lib/formValidation/validator/confirm",
|
||||||
|
"validator/usernameCheck":"lib/formValidation/validator/usernameCheck",
|
||||||
//富文本编辑器 不要直接使用,而是使用上面的editor
|
//富文本编辑器 不要直接使用,而是使用上面的editor
|
||||||
simditor: "lib/simditor/simditor",
|
simditor: "lib/simditor/simditor",
|
||||||
"simple-module": "lib/simditor/module",
|
"simple-module": "lib/simditor/module",
|
||||||
|
|||||||
44
static/src/js/lib/formValidation/validator/usernameCheck.js
Normal file
44
static/src/js/lib/formValidation/validator/usernameCheck.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
* usernameCheck validator
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function(root, factory) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// AMD module is defined
|
||||||
|
if (typeof define === "function" && define.amd) {
|
||||||
|
define("validator/usernameCheck", ["jquery", "base", "csrf"], factory);
|
||||||
|
} else {
|
||||||
|
// planted over the root!
|
||||||
|
factory(root.jQuery, root.FormValidation);
|
||||||
|
}
|
||||||
|
|
||||||
|
}(this, function ($, FormValidation, csrfHeader) {
|
||||||
|
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
|
||||||
|
'en_US': {
|
||||||
|
usernameCheck: {
|
||||||
|
'default': 'Please input the same value'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
FormValidation.Validator.usernameCheck = {
|
||||||
|
|
||||||
|
validate: function(validator, $field, options) {
|
||||||
|
if ($field.val() == '')
|
||||||
|
return true;
|
||||||
|
return !$.ajax({
|
||||||
|
async: false,
|
||||||
|
beforeSend: csrfHeader,
|
||||||
|
url: "/api/username_check/",
|
||||||
|
data: {username: $field.val()},
|
||||||
|
dataType: "json",
|
||||||
|
method: "post",
|
||||||
|
|
||||||
|
|
||||||
|
}).responseJSON.data;
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}));
|
||||||
16
static/src/js/utils/csrf.js
Normal file
16
static/src/js/utils/csrf.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
define("csrf",function(){
|
||||||
|
function get_cookie(cookie_name) {
|
||||||
|
var name = cookie_name + "=";
|
||||||
|
var ca = document.cookie.split(';');
|
||||||
|
for (var i = 0; i < ca.length; i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0) == ' ') c = c.substring(1);
|
||||||
|
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
function csrfHeader(xhr){
|
||||||
|
xhr.setRequestHeader("X-CSRFToken", get_cookie("csrftoken"));
|
||||||
|
}
|
||||||
|
return csrfHeader;
|
||||||
|
});
|
||||||
@@ -8,7 +8,8 @@ define("validation",
|
|||||||
'validator/date',
|
'validator/date',
|
||||||
'validator/integer',
|
'validator/integer',
|
||||||
'validator/between',
|
'validator/between',
|
||||||
'validator/confirm'],
|
'validator/confirm',
|
||||||
|
'validator/usernameCheck'],
|
||||||
function () {
|
function () {
|
||||||
|
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user