安全设置

This commit is contained in:
cxt 2017-04-21 22:03:51 +08:00
parent 0cae922bf1
commit f653d694d6
13 changed files with 249 additions and 86 deletions

View File

@ -336,6 +336,7 @@ class AccountController < ApplicationController
type = params[:type].to_i
req = Hash.new(false)
req[:status] = 0
req[:msg] = ''
if type == 1
if User.where(:phone => params[:value]).count > 0
req[:status] = 2 #已注册
@ -392,14 +393,15 @@ class AccountController < ApplicationController
if params[:value] =~ /^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
if User.where(:mail => params[:value]).count > 0
req[:status] = 2 #已绑定
req[:msg] = '该邮箱已被绑定'
else
begin
verification_code = code.sample(6).join
user = User.where(:mail => params[:value]).first
user = User.current
token = Token.new(:user => user, :action => "bind")
if token.save
Mailer.run.bind_email(token, verification_code)
VerificationCode.create(:email => params[:value], :status => 1, :code_type => 4, :code => verification_code)
VerificationCode.create(:email => params[:value], :status => 1, :code_type => 5, :code => verification_code)
end
rescue => e
Rails.logger.error "发送验证码出错: #{e}"
@ -410,12 +412,13 @@ class AccountController < ApplicationController
elsif params[:value] =~ /^1\d{10}$/
if User.where(:phone => params[:value]).count > 0
req[:status] = 2
req[:msg] = '该手机号已被绑定'
else
begin
verification_code = code.sample(6).join
status = Trustie::Sms.send(mobile: params[:value], code: verification_code)
if status
VerificationCode.create(:phone => params[:value], :status => 1, :code_type => 5, :code => verification_code)
VerificationCode.create(:phone => params[:value], :status => 1, :code_type => 4, :code => verification_code)
end
rescue => e
Rails.logger.error "发送验证码出错: #{e}"
@ -467,6 +470,7 @@ class AccountController < ApplicationController
else
@user.update_attributes(:mail => params[:value])
end
redirect_to security_settings_path
end
def wechat_bind

View File

@ -1,7 +1,7 @@
<div class="panel-user-right-con clearfix">
<div class="panel-user-test mt30">
<input type="hidden" id="change_type" value="<%= @type %>">
<%= form_tag(bind_email_or_phone_path, :id => 'bind_email_or_phone_form') do %>
<input type="hidden" name="type" id="change_type" value="<%= @type %>">
<% if @type == 'phone' %>
<h3 class="mb20 font-20"><i class="fa fa-mobile color-light-grey font-24 mr5"></i>手机绑定</h3>
@ -13,7 +13,7 @@
<div class="new_login_form">
<ul>
<li class="new_loggin_users">
<input type="text" id="user_phone_num" class="new_loggin_input" autocomplete="off" placeholder="请输入真实有效的11位手机号码">
<input type="text" id="user_phone_num" name="value" class="new_loggin_input" autocomplete="off" placeholder="请输入真实有效的11位手机号码">
<i class="fa font-16 mr5" id="user_phone_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_phone_notice"></p>
@ -26,14 +26,15 @@
</div>
</li>
<li class="pr">
<input type="text" id="phone_verification_code" class="new_loggin_input_test fl" placeholder="输入短信验证码">
<input type="text" id="phone_verification_code" class="new_loggin_input_test fl" placeholder="输入短信验证码">
<a href="javascript:void(0);" class="fr task-btn-ver" id="get_verification_code">获取验证码</a>
<div class="new-login-error" style="display: none;">
<p id="phone_verification_code_notice"></p>
</div>
<div class="cl"></div>
</li>
<li><a href="javascript:void(0);" class="new-user-submit">保存</a></li>
<p id="send_success_notice" class="none" style="margin-top: -15px; margin-bottom: 10px;"></p>
<li><a href="javascript:void(0);" class="new-user-submit" id="bind_email_or_phone_form_submit">保存</a></li>
</ul>
</div>
</div>
@ -48,14 +49,20 @@
<div class="new_login_form">
<ul>
<li class="new_loggin_users ">
<input type="text" id="user_email_addr" class="new_loggin_input" placeholder="请输入真实有效的邮箱">
<input type="text" id="user_email_addr" name="value" class="new_loggin_input" placeholder="请输入真实有效的邮箱">
<i class="fa font-16 mr5" id="user_email_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_email_addr_notice"></p>
<p id="user_phone_notice"></p>
</div>
</li>
<li class=" ">
<input type="text" class="new_loggin_input_test fl" placeholder="输入邮箱验证码">
<li class="pr">
<div id="drag" class="drag_slider"></div>
<div class="new-login-error" style="display: none;">
<p id="user_verification_notice"></p>
</div>
</li>
<li class="pr">
<input type="text" id="phone_verification_code" class="new_loggin_input_test fl" placeholder="输入邮箱验证码">
<a href="javascript:void(0);" class="fr task-btn-ver" id="get_verification_code">获取验证码</a>
<div class="new-login-error" style="display: none;">
<p id="phone_verification_code_notice"></p>
@ -63,7 +70,7 @@
<div class="cl"></div>
</li>
<p id="send_success_notice" class="none" style="margin-top: -15px; margin-bottom: 10px;"></p>
<li><a href="javascript:void(0);" class="new-user-submit">保存</a></li>
<li><a href="javascript:void(0);" class="new-user-submit" id="bind_email_or_phone_form_submit">保存</a></li>
</ul>
</div>
</div>

View File

@ -16,11 +16,11 @@
<% if @user.mail.blank? %>
<li class="font-14 mt10 color-grey"><i class="fa fa-exclamation-circle color-orange mr5"></i>未绑定</li>
<li class="font-14 mt10">&nbsp;</li>
<li><a href="<%= change_or_bind_path(:type => 'phone') %>" class="task-btn task-btn-blue">绑定</a></li>\
<li><a href="<%= change_or_bind_path(:type => 'mail') %>" class="task-btn task-btn-blue">绑定</a></li>\
<% else %>
<li class="font-14 mt10 color-grey"><i class="fa fa-check-circle color-green mr5"></i>已绑定</li>
<li class="font-14 mt10 t_l color-grey">您绑定的邮箱:<%= @user.user_mail %></li>
<li><a href="<%= change_or_bind_path(:type => 'phone') %>" class="task-btn">更改</a></li>
<li><a href="<%= change_or_bind_path(:type => 'mail') %>" class="task-btn">更改</a></li>
<% end %>
</ul>
<!--<ul class="panel-user-setting-ul clearfix">-->

View File

@ -39,7 +39,7 @@
<h3 class="mb15 ml15 mt15">账户管理</h3>
<li><a href="<%= my_account_path %>" id="account_setting_1">基本资料</a></li>
<li><a href="<%= avatar_account_path %>" id="account_setting_2">修改头像</a></li>
<li><a href="<%= authentication_account_path %>" id="account_setting_3">身份认证</a></li>
<!--<li><a href="<%#= authentication_account_path %>" id="account_setting_3">身份认证</a></li>-->
<li><a href="<%= security_settings_path %>" id="account_setting_4">安全设置</a></li>
<li><a href="<%= change_psd_path %>" id="account_setting_5">修改密码</a></li>
</ul>

View File

@ -7,10 +7,10 @@
<meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %>
<%= favicon %>
<%= stylesheet_link_tag 'css/bigdata-showpage', 'css/font-awesome', 'css/bigdata-common', 'css/bigdata-login', 'css/bigdata-popup' %>
<%= stylesheet_link_tag 'css/bigdata-showpage', 'css/font-awesome', 'css/bigdata-common', 'css/bigdata-login', 'css/bigdata-public', 'css/bigdata-popup' %>
<%#= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
<%= javascript_heads %>
<%= javascript_include_tag "bootstrap", "bigdata" %>
<%= javascript_include_tag "bootstrap", "bigdata", 'bigdata/application' %>
</head>
<body>
<% if @welcome %>

View File

@ -0,0 +1,2 @@
<%= l(:mail_subject_bind_mail) %>
<%= @url %>

View File

@ -139,7 +139,7 @@ function lost_psd_next(){
if($lost_psd_valid){
if($('.drag_text').html() == "验证通过"){
if($("#psd_verification_code").val().trim() == ""){
$("#psd_verification_code").html("请输入验证码");
$("#phone_verification_code_notice").html("请输入验证码");
$("#phone_verification_code_notice").parent().show();
} else{
$("#phone_verification_code_notice").html("");
@ -264,60 +264,4 @@ function email_register(){
$('#user_email_addr').blur();
$('#user_password_2').blur();
}
}
(function($){
$.fn.drag = function(options){
var x, drag = this, isMove = false, defaults = {
};
var options = $.extend(defaults, options);
//添加背景,文字,滑块
var html = '<div class="drag_bg"></div>'+
'<div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>'+
'<div class="handler handler_bg"></div>';
this.append(html);
var handler = drag.find('.handler');
var drag_bg = drag.find('.drag_bg');
var text = drag.find('.drag_text');
var maxWidth = drag.width() - handler.width(); //能滑动的最大间距
//鼠标按下时候的x轴的位置
handler.mousedown(function(e){
isMove = true;
x = e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时移动距离大于0小于最大间距滑块x轴位置等于鼠标移动距离
$(document).mousemove(function(e){
var _x = e.pageX - x;
if(isMove){
if(_x > 0 && _x <= maxWidth){
handler.css({'left': _x});
drag_bg.css({'width': _x});
}else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
}).mouseup(function(e){
isMove = false;
var _x = e.pageX - x;
if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({'left': 0});
drag_bg.css({'width': 0});
}
});
//清空事件
function dragOk(){
handler.removeClass('handler_bg').addClass('handler_ok_bg');
text.text('验证通过');
drag.css({'color': '#fff'});
handler.unbind('mousedown');
$(document).unbind('mousemove');
$(document).unbind('mouseup');
$("#user_verification_notice").html("");
$('#user_verification_notice').parent().hide();
}
};
})(jQuery);
}

View File

@ -62,6 +62,7 @@ $(function(){
$(function(){
var $phone_correct = false;
var $mail_correct = false;
var lost_psd_time = 60;
$("#user_phone_num").blur(function (event) {
if ($(this).is('#user_phone_num')) {
if (/^1\d{10}$/.test(this.value) == false){
@ -72,7 +73,7 @@ $(function(){
}
else{
$.get(
'<%=account_valid_ajax_path%>',
'/account/valid_ajax',
{ valid: "phone",
value: this.value },
function (data) {
@ -91,4 +92,150 @@ $(function(){
}
}
});
$("#user_email_addr").blur(function (event) {
if (/^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(this.value) == false){
$('#user_phone_notice').html('邮箱地址格式不对');
$('#user_phone_notice').parent().show();
$("#user_email_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orange");
$mail_correct = false;
return ;
}
if ($(this).is('#user_email_addr')) {
$.get('/account/valid_ajax',
{ valid: "mail",
value: this.value },
function (data) {
if (data.valid) {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
$("#user_email_check").removeClass("fa-times-circle").removeClass("color-orange").addClass("fa-check").addClass("color-light-green");
$mail_correct = true;
} else {
$('#user_phone_notice').html('该邮箱已被绑定');
$('#user_phone_notice').parent().show();
$("#user_email_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orange");
$mail_correct = false;
}
});
}
});
$("#get_verification_code").on('click', function(){
btn = this;
if($mail_correct || $phone_correct){
if($('.drag_text').html() == "验证通过") {
btn.setAttribute("disabled", "disabled");
var val = '';
var type = 4;
if($mail_correct){
val = $("#user_email_addr").val().trim();
type = 5;
} else if($phone_correct){
val = $("#user_phone_num").val().trim();
type = 4;
}
$.get(
'/account/get_verification_code',
{ value: val,
type: type},
function (data) {
if (data.status == "2") {
$('#user_phone_notice').html(data.msg);
$('#user_phone_notice').parent().show();
btn.removeAttribute("disabled");
} else {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
settime(btn);
if(data.status == "3"){
$("#ver_code_type").val(3);
$("#send_success_notice").html("验证码已发送到您的邮箱,去<a href='http://mail." + data.link + "' style='color: #6a8abe; text-decoration: underline;' target='_blank'>查收</a>");
$("#send_success_notice").show();
} else{
$("#ver_code_type").val(2);
$("#send_success_notice").html("验证码已发送到您的手机,请注意查收");
$("#send_success_notice").show();
}
}
});
} else{
$("#user_verification_notice").html("请先拖动滑块完成验证");
$('#user_verification_notice').parent().show();
}
} else{
$('#user_phone_num').blur();
$('#user_email_addr').blur();
}
});
$("#bind_email_or_phone_form_submit").on('click', function(){
if($("#bind_email_or_phone_form_submit").hasClass('new_login_submit_disable')){
console.log(1111);
return;
}
console.log($mail_correct || $phone_correct);
if($mail_correct || $phone_correct){
if($('.drag_text').html() == "验证通过"){
if($("#phone_verification_code").val().trim() == ""){
$("#phone_verification_code_notice").html("请输入验证码");
$("#phone_verification_code_notice").parent().show();
} else{
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
var val = '';
var type = 4;
if($mail_correct){
val = $("#user_email_addr").val().trim();
type = 5;
} else if($phone_correct){
val = $("#user_phone_num").val().trim();
type = 4;
}
$.get(
'/account/valid_verification_code',
{ phone: val,
code: $("#phone_verification_code").val().trim(),
type: type},
function (data) {
if (data.valid) {
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
$("#bind_email_or_phone_form_submit").addClass("new_login_submit_disable");
$("#bind_email_or_phone_form").submit();
} else {
$("#phone_verification_code_notice").html("验证码错误或过期");
$("#phone_verification_code_notice").parent().show();
}
});
}
} else{
$("#user_verification_notice").html("请先拖动滑块完成验证");
$('#user_verification_notice').parent().show();
}
} else{
$('#user_phone_num').blur();
$('#user_email_addr').blur();
}
});
function settime(btn){
if (lost_psd_time==0) {
$(btn).removeClass("rest-btn-ver");
btn.removeAttribute("disabled");
btn.innerHTML = "获取验证码";
lost_psd_time = 60;
return;
}else{
$(btn).addClass("rest-btn-ver");
btn.setAttribute("disabled", "disabled");
btn.innerHTML = lost_psd_time + "s后重试";
lost_psd_time--;
}
setTimeout(function(){
settime(btn);
},1000);
}
});

View File

@ -187,3 +187,59 @@ $(function(){
$(".task-close").parent().remove();
});
});
(function($){
$.fn.drag = function(options){
var x, drag = this, isMove = false, defaults = {
};
var options = $.extend(defaults, options);
//添加背景,文字,滑块
var html = '<div class="drag_bg"></div>'+
'<div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>'+
'<div class="handler handler_bg"></div>';
this.append(html);
var handler = drag.find('.handler');
var drag_bg = drag.find('.drag_bg');
var text = drag.find('.drag_text');
var maxWidth = drag.width() - handler.width(); //能滑动的最大间距
//鼠标按下时候的x轴的位置
handler.mousedown(function(e){
isMove = true;
x = e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时移动距离大于0小于最大间距滑块x轴位置等于鼠标移动距离
$(document).mousemove(function(e){
var _x = e.pageX - x;
if(isMove){
if(_x > 0 && _x <= maxWidth){
handler.css({'left': _x});
drag_bg.css({'width': _x});
}else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
}).mouseup(function(e){
isMove = false;
var _x = e.pageX - x;
if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({'left': 0});
drag_bg.css({'width': 0});
}
});
//清空事件
function dragOk(){
handler.removeClass('handler_bg').addClass('handler_ok_bg');
text.text('验证通过');
drag.css({'color': '#fff'});
handler.unbind('mousedown');
$(document).unbind('mousemove');
$(document).unbind('mouseup');
$("#user_verification_notice").html("");
$('#user_verification_notice').parent().hide();
}
};
})(jQuery);

View File

@ -98,7 +98,8 @@ a.task-btn-ver-line{height:43px; line-height: 43px; border-radius:5px; font-siz
a:hover.task-btn-ver-line{ border:1px solid #29bd8b;}
a:hover.task-btn-ver{background:#5f7cab;}
.new_login_submit_disable{ width:265px; height:40px; line-height: 40px; background:#ccc; color:#fff; font-size:14px; border-radius:5px; border:none; text-align:center; cursor:pointer; vertical-align: middle;}
.new_login_submit{ width:100%; height:45px; line-height: 45px; background:#29bd8b; color:#fff; font-size:14px; border-radius:5px; border:none; text-align:center; cursor:pointer; vertical-align: middle;}
.new_login_submit,a.new_login_submit{ display: block; text-decoration: none !important; width:100%; height:45px; line-height: 45px; background:#29bd8b; color:#fff !important; font-size:14px; border-radius:5px; border:none; text-align:center; cursor:pointer; vertical-align: middle;}
.new_login_submit a{ color:#fff !important; text-decoration: none;}
.new_login_submit:hover{background: #19b17e;}
/*提示条*/
.alert{ padding:10px;border: 1px solid transparent; text-align: center;}
@ -126,4 +127,5 @@ a:hover.task-btn-ver{background:#5f7cab;}
.break_word{word-break: break-all;word-wrap: break-word;}
.break_word_firefox{white-space: pre-wrap !important;word-break: break-all;}
.pr {position:relative;}

View File

@ -139,10 +139,3 @@ a.shadowbox_news_all{ display:block; width:305px; height:40px; line-height:40px;
.task-img-weixin{ width: 50px; height: 50px; border-radius:100px; background:#ccc; }
.task-img-weixin:hover{ background:#86c610;}
.new-login-success{ text-align: center;}
.drag_slider{ position: relative; background-color: #e8e8e8; width: 350px; height: 45px; line-height: 45px; text-align: center;}
.drag_slider .handler{ position: absolute; top: 0px; left: 0px; width: 50px; height: 43px; border: 1px solid #ccc; cursor: move;}
.handler_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;}
.handler_ok_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;}
.drag_slider .drag_bg{ background-color: #29bd8b; height: 45px; width: 0px;}
.drag_slider .drag_text{ position: absolute; top: 0px; width: 350px; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none;}

View File

@ -189,4 +189,12 @@ input.task-height-150,textarea.task-height-150,.task-height-100{height:100px;}
.my_account_info li a{ color: #888;}
.my_account_info font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top: -15px;left: 140px; border-style:solid; border-color: transparent transparent #fff transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.my_account_info li{ padding-left: 5px; line-height: 1.5;}
.li_bottom_border{ border-bottom:1px solid #eee;}
.li_bottom_border{ border-bottom:1px solid #eee;}
/*滑块验证*/
.drag_slider{ position: relative; background-color: #e8e8e8; width: 350px; height: 45px; line-height: 45px; text-align: center;}
.drag_slider .handler{ position: absolute; top: 0px; left: 0px; width: 50px; height: 43px; border: 1px solid #ccc; cursor: move;}
.handler_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;}
.handler_ok_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;}
.drag_slider .drag_bg{ background-color: #29bd8b; height: 45px; width: 0px;}
.drag_slider .drag_text{ position: absolute; top: 0px; width: 350px; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none;}

View File

@ -124,7 +124,7 @@
.-task-desc div{position: absolute;top: 10px;right: -7px;}
/* 个人资料 20170324byLB */
.panel-user-left{ width:20%; min-width:240px; background:#eaebec; height:90%;}
.panel-user-left{ width:20%; min-width:240px; background:#eaebec; height:600px;}
.panel-user-right{width:80%; background:#fff;}
.panel-user-info{ width:100%; height:240px; }
.panel-user-img img{ display: block; width:240px; height:240px;}