mirror of https://github.com/tp4a/teleport
fixed: 删除组时,同步更新授权策略和授权映射。
parent
37486ddfa4
commit
33eead9f05
|
@ -80,12 +80,13 @@ def remove(handler, gtype, glist):
|
|||
if gtype not in TP_GROUP_TYPES:
|
||||
return TPE_PARAM
|
||||
|
||||
group_list = [str(i) for i in glist]
|
||||
group_ids = ','.join([str(i) for i in glist])
|
||||
|
||||
# 1. 获取组的名称,用于记录系统日志
|
||||
where = 'g.type={gtype} AND g.id IN ({gids})'.format(gtype=gtype, gids=','.join(group_list))
|
||||
where = 'g.type={gtype} AND g.id IN ({gids})'.format(gtype=gtype, gids=group_ids)
|
||||
|
||||
s = SQL(get_db())
|
||||
db = get_db()
|
||||
s = SQL(db)
|
||||
err = s.select_from('group', ['name'], alt_name='g').where(where).query()
|
||||
if err != TPE_OK:
|
||||
return err
|
||||
|
@ -94,17 +95,47 @@ def remove(handler, gtype, glist):
|
|||
|
||||
name_list = [n['name'] for n in s.recorder]
|
||||
|
||||
sql_list = []
|
||||
|
||||
# 删除组与成员的映射关系
|
||||
where = 'type={} AND gid IN ({})'.format(gtype, ','.join(group_list))
|
||||
err = s.reset().delete_from('group_map').where(where).exec()
|
||||
if err != TPE_OK:
|
||||
return err
|
||||
sql = 'DELETE FROM `{tpdp}group_map` WHERE `type`={t} AND `gid` IN ({ids});'.format(tpdp=db.table_prefix, t=gtype, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
|
||||
# where = 'type={} AND gid IN ({})'.format(gtype, ','.join(group_list))
|
||||
# err = s.reset().delete_from('group_map').where(where).exec()
|
||||
# if err != TPE_OK:
|
||||
# return err
|
||||
|
||||
# 删除组
|
||||
where = 'type={gtype} AND id IN ({gids})'.format(gtype=gtype, gids=','.join(group_list))
|
||||
err = s.reset().delete_from('group').where(where).exec()
|
||||
if err != TPE_OK:
|
||||
return err
|
||||
sql = 'DELETE FROM `{tpdp}group` WHERE `type`={t} AND `id` IN ({ids});'.format(tpdp=db.table_prefix, t=gtype, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
# where = 'type={gtype} AND id IN ({gids})'.format(gtype=gtype, gids=','.join(group_list))
|
||||
# err = s.reset().delete_from('group').where(where).exec()
|
||||
# if err != TPE_OK:
|
||||
# return err
|
||||
|
||||
if gtype == TP_GROUP_USER:
|
||||
gname = 'gu'
|
||||
elif gtype == TP_GROUP_HOST:
|
||||
gname = 'gh'
|
||||
elif gtype == TP_GROUP_ACCOUNT:
|
||||
gname = 'ga'
|
||||
else:
|
||||
return TPE_PARAM
|
||||
|
||||
# 将组从运维授权中移除
|
||||
sql = 'DELETE FROM `{}ops_auz` WHERE `rtype`={rtype} AND `rid` IN ({ids});'.format(db.table_prefix, rtype=gtype, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
sql = 'DELETE FROM `{}ops_map` WHERE `{gname}_id` IN ({ids});'.format(db.table_prefix, gname=gname, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
# 将组从审计授权中移除
|
||||
sql = 'DELETE FROM `{}audit_auz` WHERE `rtype`={rtype} AND `rid` IN ({ids});'.format(db.table_prefix, rtype=gtype, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
sql = 'DELETE FROM `{}audit_map` WHERE `{gname}_id` IN ({ids});'.format(db.table_prefix, gname=gname, ids=group_ids)
|
||||
sql_list.append(sql)
|
||||
|
||||
if not db.transaction(sql_list):
|
||||
return TPE_DATABASE
|
||||
|
||||
# 记录系统日志
|
||||
syslog.sys_log(handler.get_current_user(), handler.request.remote_ip, TPE_OK, "删除{gtype}:{gname}".format(gtype=TP_GROUP_TYPES[gtype], gname=','.join(name_list)))
|
||||
|
|
Loading…
Reference in New Issue