mirror of https://github.com/tp4a/teleport
增加用户有效期
parent
4fec254455
commit
e4b30658af
|
@ -744,6 +744,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
dlg.field_mobile = '';
|
dlg.field_mobile = '';
|
||||||
dlg.field_qq = '';
|
dlg.field_qq = '';
|
||||||
dlg.field_wechat = '';
|
dlg.field_wechat = '';
|
||||||
|
dlg.field_vaild_from = '';
|
||||||
|
dlg.field_vaild_to = '';
|
||||||
dlg.field_desc = '';
|
dlg.field_desc = '';
|
||||||
|
|
||||||
dlg.dom = {
|
dlg.dom = {
|
||||||
|
@ -756,6 +758,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
, edit_mobile: $('#edit-user-mobile')
|
, edit_mobile: $('#edit-user-mobile')
|
||||||
, edit_qq: $('#edit-user-qq')
|
, edit_qq: $('#edit-user-qq')
|
||||||
, edit_wechat: $('#edit-user-wechat')
|
, edit_wechat: $('#edit-user-wechat')
|
||||||
|
, edit_valid_from: $('#edit-user-valid-from')
|
||||||
|
, edit_valid_to: $('#edit-user-valid-to')
|
||||||
, edit_desc: $('#edit-user-desc')
|
, edit_desc: $('#edit-user-desc')
|
||||||
, msg: $('#edit-user-message')
|
, msg: $('#edit-user-message')
|
||||||
, btn_save: $('#btn-edit-user-save')
|
, btn_save: $('#btn-edit-user-save')
|
||||||
|
@ -778,6 +782,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
_ret.push('<li><a href="javascript:;" data-tp-selector="' + role.id + '"><i class="fa fa-user-circle fa-fw"></i> ' + role.name + '</a></li>');
|
_ret.push('<li><a href="javascript:;" data-tp-selector="' + role.id + '"><i class="fa fa-user-circle fa-fw"></i> ' + role.name + '</a></li>');
|
||||||
});
|
});
|
||||||
_ret.push('</ul>');
|
_ret.push('</ul>');
|
||||||
|
dlg.dom.edit_valid_from.datetimepicker({format: "yyyy-mm-dd h:ii", autoclose: 1, todayHighlight: 1});
|
||||||
|
dlg.dom.edit_valid_to.datetimepicker({format: "yyyy-mm-dd h:ii", autoclose: 1, todayHighlight: 1});
|
||||||
dlg.dom.select_role.after($(_ret.join('')));
|
dlg.dom.select_role.after($(_ret.join('')));
|
||||||
|
|
||||||
dlg.dom.selected_role = $('#' + dlg.dom_id + ' span[data-selected-role]');
|
dlg.dom.selected_role = $('#' + dlg.dom_id + ' span[data-selected-role]');
|
||||||
|
@ -887,6 +893,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
dlg.dom.edit_qq.val('');
|
dlg.dom.edit_qq.val('');
|
||||||
dlg.dom.edit_wechat.val('');
|
dlg.dom.edit_wechat.val('');
|
||||||
dlg.dom.edit_desc.val('');
|
dlg.dom.edit_desc.val('');
|
||||||
|
dlg.dom.edit_valid_from.find('input').val('');
|
||||||
|
dlg.dom.edit_valid_to.find('input').val('');
|
||||||
} else {
|
} else {
|
||||||
dlg.field_id = user.id;
|
dlg.field_id = user.id;
|
||||||
dlg.field_auth_type = user.auth_type;
|
dlg.field_auth_type = user.auth_type;
|
||||||
|
@ -905,6 +913,16 @@ $app.create_dlg_edit_user = function () {
|
||||||
dlg.dom.edit_qq.val(user.qq);
|
dlg.dom.edit_qq.val(user.qq);
|
||||||
dlg.dom.edit_wechat.val(user.wechat);
|
dlg.dom.edit_wechat.val(user.wechat);
|
||||||
dlg.dom.edit_desc.val(user.desc);
|
dlg.dom.edit_desc.val(user.desc);
|
||||||
|
if (user.valid_from == 0 ) {
|
||||||
|
dlg.dom.edit_valid_from.find('input').val('');
|
||||||
|
}else{
|
||||||
|
dlg.dom.edit_valid_from.find('input').val(tp_format_datetime(tp_utc2local(user.valid_from), 'yyyy-MM-dd HH:mm'));
|
||||||
|
}
|
||||||
|
if (user.valid_to == 0 ) {
|
||||||
|
dlg.dom.edit_valid_to.find('input').val('');
|
||||||
|
}else{
|
||||||
|
dlg.dom.edit_valid_to.find('input').val(tp_format_datetime(tp_utc2local(user.valid_to), 'yyyy-MM-dd HH:mm'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dlg.dom.selected_role.text(role_name);
|
dlg.dom.selected_role.text(role_name);
|
||||||
|
|
||||||
|
@ -943,6 +961,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
dlg.field_mobile = dlg.dom.edit_mobile.val();
|
dlg.field_mobile = dlg.dom.edit_mobile.val();
|
||||||
dlg.field_qq = dlg.dom.edit_qq.val();
|
dlg.field_qq = dlg.dom.edit_qq.val();
|
||||||
dlg.field_wechat = dlg.dom.edit_wechat.val();
|
dlg.field_wechat = dlg.dom.edit_wechat.val();
|
||||||
|
dlg.field_valid_from = dlg.dom.edit_valid_from.find('input').val();
|
||||||
|
dlg.field_valid_to = dlg.dom.edit_valid_to.find('input').val();
|
||||||
dlg.field_desc = dlg.dom.edit_desc.val();
|
dlg.field_desc = dlg.dom.edit_desc.val();
|
||||||
|
|
||||||
if (dlg.field_role === -1) {
|
if (dlg.field_role === -1) {
|
||||||
|
@ -1002,6 +1022,8 @@ $app.create_dlg_edit_user = function () {
|
||||||
, mobile: dlg.field_mobile
|
, mobile: dlg.field_mobile
|
||||||
, qq: dlg.field_qq
|
, qq: dlg.field_qq
|
||||||
, wechat: dlg.field_wechat
|
, wechat: dlg.field_wechat
|
||||||
|
, valid_from: dlg.field_valid_from
|
||||||
|
, valid_to: dlg.field_valid_to
|
||||||
, desc: dlg.field_desc
|
, desc: dlg.field_desc
|
||||||
},
|
},
|
||||||
function (ret) {
|
function (ret) {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<%block name="extend_js_file">
|
<%block name="extend_js_file">
|
||||||
<script type="text/javascript" src="${ static_url('js/user/user-list.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/user/user-list.js') }"></script>
|
||||||
<script type="text/javascript" src="${ static_url('plugins/jquery/ajaxfileupload.js') }"></script>
|
<script type="text/javascript" src="${ static_url('plugins/jquery/ajaxfileupload.js') }"></script>
|
||||||
|
<script type="text/javascript" src="${ static_url('plugins/datetimepicker/js/bootstrap-datetimepicker.js') }"></script>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
<%block name="embed_js">
|
<%block name="embed_js">
|
||||||
|
@ -231,6 +232,25 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group form-group-sm">
|
||||||
|
<label for="edit-user-valid-date" class="col-sm-2 control-label">生效时间:</label>
|
||||||
|
<div class="col-sm-5">
|
||||||
|
<div class='input-group date' id='edit-user-valid-from'>
|
||||||
|
<input type='text' class="form-control" />
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<span class="glyphicon glyphicon-calendar"></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='input-group date' id='edit-user-valid-to'>
|
||||||
|
<input type='text' class="form-control" />
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<span class="glyphicon glyphicon-calendar"></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group form-group-sm">
|
<div class="form-group form-group-sm">
|
||||||
<label for="edit-user-desc" class="col-sm-2 control-label">备注:</label>
|
<label for="edit-user-desc" class="col-sm-2 control-label">备注:</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
|
|
|
@ -588,6 +588,15 @@ class DoUpdateUserHandler(TPBaseJsonHandler):
|
||||||
args['mobile'] = args['mobile'].strip()
|
args['mobile'] = args['mobile'].strip()
|
||||||
args['qq'] = args['qq'].strip()
|
args['qq'] = args['qq'].strip()
|
||||||
args['wechat'] = args['wechat'].strip()
|
args['wechat'] = args['wechat'].strip()
|
||||||
|
|
||||||
|
if args['valid_from'] == '':
|
||||||
|
args['valid_from'] = '1970-01-01'
|
||||||
|
else:
|
||||||
|
args['valid_from'] = args['valid_from'].strip()
|
||||||
|
if args['valid_to'] == '':
|
||||||
|
args['valid_to'] = '1970-01-01'
|
||||||
|
else:
|
||||||
|
args['valid_to'] = args['valid_to'].strip()
|
||||||
args['desc'] = args['desc'].strip()
|
args['desc'] = args['desc'].strip()
|
||||||
except:
|
except:
|
||||||
return self.write_json(TPE_PARAM)
|
return self.write_json(TPE_PARAM)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import time,datetime
|
||||||
from app.base.configs import tp_cfg
|
from app.base.configs import tp_cfg
|
||||||
from app.base.db import get_db, SQL
|
from app.base.db import get_db, SQL
|
||||||
from app.base.logger import log
|
from app.base.logger import log
|
||||||
|
@ -38,7 +38,7 @@ def get_by_username(username):
|
||||||
s.select_from('user',
|
s.select_from('user',
|
||||||
['id', 'type', 'auth_type', 'username', 'surname', 'ldap_dn', 'password', 'oath_secret', 'role_id',
|
['id', 'type', 'auth_type', 'username', 'surname', 'ldap_dn', 'password', 'oath_secret', 'role_id',
|
||||||
'state', 'fail_count', 'lock_time', 'email', 'create_time', 'last_login', 'last_ip', 'last_chpass',
|
'state', 'fail_count', 'lock_time', 'email', 'create_time', 'last_login', 'last_ip', 'last_chpass',
|
||||||
'mobile', 'qq', 'wechat', 'desc'], alt_name='u')
|
'mobile', 'qq', 'wechat', 'valid_from', 'valid_to', 'desc'], alt_name='u')
|
||||||
s.left_join('role', ['name', 'privilege'], join_on='r.id=u.role_id', alt_name='r', out_map={'name': 'role'})
|
s.left_join('role', ['name', 'privilege'], join_on='r.id=u.role_id', alt_name='r', out_map={'name': 'role'})
|
||||||
s.where('u.username="{}"'.format(username))
|
s.where('u.username="{}"'.format(username))
|
||||||
err = s.query()
|
err = s.query()
|
||||||
|
@ -57,6 +57,8 @@ def get_by_username(username):
|
||||||
def login(handler, username, password=None, oath_code=None, check_bind_oath=False):
|
def login(handler, username, password=None, oath_code=None, check_bind_oath=False):
|
||||||
sys_cfg = tp_cfg().sys
|
sys_cfg = tp_cfg().sys
|
||||||
msg = ''
|
msg = ''
|
||||||
|
current_unix_time = int(time.mktime(datetime.datetime.now().timetuple()))
|
||||||
|
# log.e('current:',current_unix_time,'validfrom:', user_info['valid_from'])
|
||||||
|
|
||||||
err, user_info = get_by_username(username)
|
err, user_info = get_by_username(username)
|
||||||
if err != TPE_OK:
|
if err != TPE_OK:
|
||||||
|
@ -88,6 +90,10 @@ def login(handler, username, password=None, oath_code=None, check_bind_oath=Fals
|
||||||
msg = '登录失败,用户状态异常'
|
msg = '登录失败,用户状态异常'
|
||||||
syslog.sys_log(user_info, handler.request.remote_ip, TPE_FAILED, msg)
|
syslog.sys_log(user_info, handler.request.remote_ip, TPE_FAILED, msg)
|
||||||
return TPE_FAILED, None, msg
|
return TPE_FAILED, None, msg
|
||||||
|
elif current_unix_time < user_info['valid_from'] or (current_unix_time > user_info['valid_to'] and user_info['valid_to'] != 0):
|
||||||
|
msg = '登录失败,用户已过期'
|
||||||
|
syslog.sys_log(user_info, handler.request.remote_ip, TPE_FAILED, msg)
|
||||||
|
return TPE_FAILED, None, msg
|
||||||
|
|
||||||
err_msg = ''
|
err_msg = ''
|
||||||
if password is not None:
|
if password is not None:
|
||||||
|
@ -172,7 +178,7 @@ def login(handler, username, password=None, oath_code=None, check_bind_oath=Fals
|
||||||
def get_users(sql_filter, sql_order, sql_limit, sql_restrict, sql_exclude):
|
def get_users(sql_filter, sql_order, sql_limit, sql_restrict, sql_exclude):
|
||||||
dbtp = get_db().table_prefix
|
dbtp = get_db().table_prefix
|
||||||
s = SQL(get_db())
|
s = SQL(get_db())
|
||||||
s.select_from('user', ['id', 'type', 'auth_type', 'username', 'surname', 'role_id', 'state', 'email', 'last_login'],
|
s.select_from('user', ['id', 'type', 'auth_type', 'username', 'surname', 'role_id', 'state', 'email', 'last_login', 'valid_from', 'valid_to'],
|
||||||
alt_name='u')
|
alt_name='u')
|
||||||
s.left_join('role', ['name', 'privilege'], join_on='r.id=u.role_id', alt_name='r', out_map={'name': 'role'})
|
s.left_join('role', ['name', 'privilege'], join_on='r.id=u.role_id', alt_name='r', out_map={'name': 'role'})
|
||||||
|
|
||||||
|
@ -353,14 +359,15 @@ def create_user(handler, user):
|
||||||
|
|
||||||
sql = 'INSERT INTO `{}user` (' \
|
sql = 'INSERT INTO `{}user` (' \
|
||||||
'`role_id`, `username`, `surname`, `type`, `ldap_dn`, `auth_type`, `password`, `state`, ' \
|
'`role_id`, `username`, `surname`, `type`, `ldap_dn`, `auth_type`, `password`, `state`, ' \
|
||||||
'`email`, `creator_id`, `create_time`, `last_login`, `last_chpass`, `desc`' \
|
'`email`, `creator_id`, `create_time`, `last_login`, `last_chpass`, `valid_from`, `valid_to`, `desc`' \
|
||||||
') VALUES (' \
|
') VALUES (' \
|
||||||
'{role}, "{username}", "{surname}", {user_type}, "{ldap_dn}", {auth_type}, "{password}", {state}, ' \
|
'{role}, "{username}", "{surname}", {user_type}, "{ldap_dn}", {auth_type}, "{password}", {state}, ' \
|
||||||
'"{email}", {creator_id}, {create_time}, {last_login}, {last_chpass}, "{desc}");' \
|
'"{email}", {creator_id}, {create_time}, {last_login}, {last_chpass}, unix_timestamp("{valid_from}"), '\
|
||||||
|
'unix_timestamp("{valid_to}"), "{desc}");' \
|
||||||
''.format(db.table_prefix, role=user['role'], username=user['username'], surname=user['surname'],
|
''.format(db.table_prefix, role=user['role'], username=user['username'], surname=user['surname'],
|
||||||
user_type=user['type'], ldap_dn=user['ldap_dn'], auth_type=user['auth_type'], password=_password,
|
user_type=user['type'], ldap_dn=user['ldap_dn'], auth_type=user['auth_type'], password=_password,
|
||||||
state=TP_STATE_NORMAL, email=user['email'], creator_id=operator['id'], create_time=_time_now,
|
state=TP_STATE_NORMAL, email=user['email'], creator_id=operator['id'], create_time=_time_now,
|
||||||
last_login=0, last_chpass=_time_now, desc=user['desc'])
|
last_login=0, last_chpass=_time_now, valid_from=user['valid_from'], valid_to=user['valid_to'], desc=user['desc'])
|
||||||
db_ret = db.exec(sql)
|
db_ret = db.exec(sql)
|
||||||
if not db_ret:
|
if not db_ret:
|
||||||
return TPE_DATABASE, 0
|
return TPE_DATABASE, 0
|
||||||
|
@ -400,12 +407,12 @@ def update_user(handler, args):
|
||||||
sql = 'UPDATE `{}user` SET ' \
|
sql = 'UPDATE `{}user` SET ' \
|
||||||
'`username`="{username}", `surname`="{surname}", `auth_type`={auth_type}, ' \
|
'`username`="{username}", `surname`="{surname}", `auth_type`={auth_type}, ' \
|
||||||
'`role_id`={role}, `email`="{email}", `mobile`="{mobile}", `qq`="{qq}", ' \
|
'`role_id`={role}, `email`="{email}", `mobile`="{mobile}", `qq`="{qq}", ' \
|
||||||
'`wechat`="{wechat}", `desc`="{desc}" WHERE `id`={user_id};' \
|
'`wechat`="{wechat}", `valid_from`=unix_timestamp("{valid_from}"), `valid_to`=unix_timestamp("{valid_to}"), '\
|
||||||
|
'`desc`="{desc}" WHERE `id`={user_id};' \
|
||||||
''.format(db.table_prefix,
|
''.format(db.table_prefix,
|
||||||
username=args['username'], surname=args['surname'], auth_type=args['auth_type'], role=args['role'],
|
username=args['username'], surname=args['surname'], auth_type=args['auth_type'], role=args['role'],
|
||||||
email=args['email'],
|
email=args['email'], mobile=args['mobile'], qq=args['qq'], wechat=args['wechat'],
|
||||||
mobile=args['mobile'], qq=args['qq'], wechat=args['wechat'], desc=args['desc'],
|
valid_from=args['valid_from'], valid_to=args['valid_to'], desc=args['desc'], user_id=args['id']
|
||||||
user_id=args['id']
|
|
||||||
)
|
)
|
||||||
db_ret = db.exec(sql)
|
db_ret = db.exec(sql)
|
||||||
if not db_ret:
|
if not db_ret:
|
||||||
|
|
Loading…
Reference in New Issue