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_qq = '';
|
||||
dlg.field_wechat = '';
|
||||
dlg.field_vaild_from = '';
|
||||
dlg.field_vaild_to = '';
|
||||
dlg.field_desc = '';
|
||||
|
||||
dlg.dom = {
|
||||
|
@ -756,6 +758,8 @@ $app.create_dlg_edit_user = function () {
|
|||
, edit_mobile: $('#edit-user-mobile')
|
||||
, edit_qq: $('#edit-user-qq')
|
||||
, edit_wechat: $('#edit-user-wechat')
|
||||
, edit_valid_from: $('#edit-user-valid-from')
|
||||
, edit_valid_to: $('#edit-user-valid-to')
|
||||
, edit_desc: $('#edit-user-desc')
|
||||
, msg: $('#edit-user-message')
|
||||
, 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('</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.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_wechat.val('');
|
||||
dlg.dom.edit_desc.val('');
|
||||
dlg.dom.edit_valid_from.find('input').val('');
|
||||
dlg.dom.edit_valid_to.find('input').val('');
|
||||
} else {
|
||||
dlg.field_id = user.id;
|
||||
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_wechat.val(user.wechat);
|
||||
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);
|
||||
|
||||
|
@ -943,6 +961,8 @@ $app.create_dlg_edit_user = function () {
|
|||
dlg.field_mobile = dlg.dom.edit_mobile.val();
|
||||
dlg.field_qq = dlg.dom.edit_qq.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();
|
||||
|
||||
if (dlg.field_role === -1) {
|
||||
|
@ -1002,6 +1022,8 @@ $app.create_dlg_edit_user = function () {
|
|||
, mobile: dlg.field_mobile
|
||||
, qq: dlg.field_qq
|
||||
, wechat: dlg.field_wechat
|
||||
, valid_from: dlg.field_valid_from
|
||||
, valid_to: dlg.field_valid_to
|
||||
, desc: dlg.field_desc
|
||||
},
|
||||
function (ret) {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<%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('plugins/jquery/ajaxfileupload.js') }"></script>
|
||||
<script type="text/javascript" src="${ static_url('plugins/datetimepicker/js/bootstrap-datetimepicker.js') }"></script>
|
||||
</%block>
|
||||
|
||||
<%block name="embed_js">
|
||||
|
@ -231,6 +232,25 @@
|
|||
</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">
|
||||
<label for="edit-user-desc" class="col-sm-2 control-label">备注:</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
|
@ -588,6 +588,15 @@ class DoUpdateUserHandler(TPBaseJsonHandler):
|
|||
args['mobile'] = args['mobile'].strip()
|
||||
args['qq'] = args['qq'].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()
|
||||
except:
|
||||
return self.write_json(TPE_PARAM)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import time,datetime
|
||||
from app.base.configs import tp_cfg
|
||||
from app.base.db import get_db, SQL
|
||||
from app.base.logger import log
|
||||
|
@ -38,7 +38,7 @@ def get_by_username(username):
|
|||
s.select_from('user',
|
||||
['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',
|
||||
'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.where('u.username="{}"'.format(username))
|
||||
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):
|
||||
sys_cfg = tp_cfg().sys
|
||||
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)
|
||||
if err != TPE_OK:
|
||||
|
@ -88,6 +90,10 @@ def login(handler, username, password=None, oath_code=None, check_bind_oath=Fals
|
|||
msg = '登录失败,用户状态异常'
|
||||
syslog.sys_log(user_info, handler.request.remote_ip, TPE_FAILED, 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 = ''
|
||||
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):
|
||||
dbtp = get_db().table_prefix
|
||||
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')
|
||||
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` (' \
|
||||
'`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 (' \
|
||||
'{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'],
|
||||
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,
|
||||
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)
|
||||
if not db_ret:
|
||||
return TPE_DATABASE, 0
|
||||
|
@ -400,12 +407,12 @@ def update_user(handler, args):
|
|||
sql = 'UPDATE `{}user` SET ' \
|
||||
'`username`="{username}", `surname`="{surname}", `auth_type`={auth_type}, ' \
|
||||
'`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,
|
||||
username=args['username'], surname=args['surname'], auth_type=args['auth_type'], role=args['role'],
|
||||
email=args['email'],
|
||||
mobile=args['mobile'], qq=args['qq'], wechat=args['wechat'], desc=args['desc'],
|
||||
user_id=args['id']
|
||||
email=args['email'], mobile=args['mobile'], qq=args['qq'], wechat=args['wechat'],
|
||||
valid_from=args['valid_from'], valid_to=args['valid_to'], desc=args['desc'], user_id=args['id']
|
||||
)
|
||||
db_ret = db.exec(sql)
|
||||
if not db_ret:
|
||||
|
|
Loading…
Reference in New Issue