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'^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'^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/register/$', UserRegisterAPIView.as_view(), name="user_register_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({
|
||||
@@ -69,6 +69,7 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
||||
var new_password = $("#new_password ").val();
|
||||
var password = $("#password").val();
|
||||
$.ajax({
|
||||
beforeSend: csrfHeader,
|
||||
url: "/api/change_password/",
|
||||
data: {username: username, new_password: new_password , old_password : password},
|
||||
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")
|
||||
.formValidation({
|
||||
framework: "bootstrap",
|
||||
@@ -24,6 +24,7 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
||||
var username = $("#username").val();
|
||||
var password = $("#password").val();
|
||||
$.ajax({
|
||||
beforeSend: csrfHeader,
|
||||
url: "/api/login/",
|
||||
data: {username: username, password: password},
|
||||
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")
|
||||
.formValidation({
|
||||
@@ -13,6 +13,9 @@ require(["jquery", "bs_alert", "validation"], function($, bs_alert){
|
||||
min: 3,
|
||||
max: 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 password = $("#password").val();
|
||||
$.ajax({
|
||||
beforeSend: csrfHeader,
|
||||
url: "/api/register/",
|
||||
data: {username: username, real_name: real_name, password: password},
|
||||
dataType: "json",
|
||||
|
||||
@@ -14,6 +14,7 @@ var require = {
|
||||
bs_alert: "utils/bs_alert",
|
||||
submit_code: "app/oj/problem/submit_code",
|
||||
contest: "app/admin/contest/contest",
|
||||
csrf: "utils/csrf",
|
||||
|
||||
//formValidation 不要在代码中单独使用,而是使用和修改utils/validation
|
||||
base: "lib/formValidation/base",
|
||||
@@ -26,7 +27,7 @@ var require = {
|
||||
"validator/integer": "lib/formValidation/validator/integer",
|
||||
"validator/between": "lib/formValidation/validator/between",
|
||||
'validator/confirm':"lib/formValidation/validator/confirm",
|
||||
|
||||
"validator/usernameCheck":"lib/formValidation/validator/usernameCheck",
|
||||
//富文本编辑器 不要直接使用,而是使用上面的editor
|
||||
simditor: "lib/simditor/simditor",
|
||||
"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/integer',
|
||||
'validator/between',
|
||||
'validator/confirm'],
|
||||
'validator/confirm',
|
||||
'validator/usernameCheck'],
|
||||
function () {
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user