diff --git a/server/www/teleport/view/_footer.mako b/server/www/teleport/view/_footer.mako index 2b0e231..fb7f3e1 100644 --- a/server/www/teleport/view/_footer.mako +++ b/server/www/teleport/view/_footer.mako @@ -4,7 +4,7 @@
diff --git a/server/www/teleport/webroot/app/base/controller.py b/server/www/teleport/webroot/app/base/controller.py index c58367e..6ac1f4a 100644 --- a/server/www/teleport/webroot/app/base/controller.py +++ b/server/www/teleport/webroot/app/base/controller.py @@ -122,25 +122,36 @@ class TPBaseHandler(tornado.web.RequestHandler): def get_current_user(self): return self._user - def check_privilege(self, require_privilege): + def check_privilege(self, require_privilege, need_process=True): if not self._user['_is_login']: if self._mode == self.MODE_HTTP: - self.redirect('/auth/login?ref={}'.format(quote(self.request.uri))) + if need_process: + self.redirect('/auth/login?ref={}'.format(quote(self.request.uri))) elif self._mode == self.MODE_JSON: - self.write_json(TPE_NEED_LOGIN) + if need_process: + self.write_json(TPE_NEED_LOGIN) else: - raise RuntimeError("invalid request mode.") + if need_process: + raise RuntimeError("invalid request mode.") + else: + return TPE_HTTP_METHOD return TPE_NEED_LOGIN + else: if (self._user['privilege'] & require_privilege) != 0: return TPE_OK if self._mode == self.MODE_HTTP: - self.show_error_page(TPE_PRIVILEGE) + if need_process: + self.show_error_page(TPE_PRIVILEGE) elif self._mode == self.MODE_JSON: - self.write_json(TPE_PRIVILEGE) + if need_process: + self.write_json(TPE_PRIVILEGE) else: - raise RuntimeError("invalid request mode.") + if need_process: + raise RuntimeError("invalid request mode.") + else: + return TPE_HTTP_METHOD return TPE_PRIVILEGE diff --git a/server/www/teleport/webroot/app/controller/host.py b/server/www/teleport/webroot/app/controller/host.py index 49fd143..a87be71 100644 --- a/server/www/teleport/webroot/app/controller/host.py +++ b/server/www/teleport/webroot/app/controller/host.py @@ -160,24 +160,31 @@ class DoImportHandler(TPBaseHandler): def post(self): """ csv导入规则: - 每一行的数据格式: 操作系统类型,IP,名称,路由IP,路由端口,资产编号,协议类型,账号,认证类型,密码或私钥,账号提示,密码提示,分组,描述 + 每一行的数据格式: 主机IP,操作系统类型,名称,路由IP,路由端口,资产编号,账号,协议类型,协议端口,认证类型,密码或私钥,账号提示,密码提示,分组,描述 在导入时: 0. 以“#”作为行注释。 1. 首先必须是主机数据,随后可以跟多个账号数据(直到遇到下一个主机数据行之前,账号会与上一个主机关联)。 2. 一个主机或账号属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。 3. 空行跳过,数据格式不正确的跳过。 """ - ret = self.check_privilege(TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_GROUP | TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP) - if ret != TPE_OK: - return + ret = dict() + ret['code'] = TPE_OK + ret['message'] = '' + + rv = self.check_privilege(TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_GROUP | TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP, need_process=False) + if rv != TPE_OK: + ret['code'] = rv + if rv == TPE_NEED_LOGIN: + ret['message'] = '需要登录!' + elif rv == TPE_PRIVILEGE: + ret['message'] = '权限不足!' + else: + ret['message'] = '未知错误!' + return self.write(json.dumps(ret).encode('utf8')) # success = list() failed = list() group_failed = list() - - ret = dict() - ret['code'] = TPE_OK - ret['message'] = '' csv_filename = '' try: diff --git a/server/www/teleport/webroot/app/controller/user.py b/server/www/teleport/webroot/app/controller/user.py index 00bf189..6085f70 100644 --- a/server/www/teleport/webroot/app/controller/user.py +++ b/server/www/teleport/webroot/app/controller/user.py @@ -310,17 +310,26 @@ class DoImportHandler(TPBaseHandler): 2. 一个用户属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。 3. 空行跳过,数据格式不正确的跳过。 """ - ret = self.check_privilege(TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP) - if ret != TPE_OK: - return - - success = list() - failed = list() - group_failed = list() ret = dict() ret['code'] = TPE_OK ret['message'] = '' + + rv = self.check_privilege(TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP, need_process=False) + if rv != TPE_OK: + ret['code'] = rv + ret['code'] = rv + if rv == TPE_NEED_LOGIN: + ret['message'] = '需要登录!' + elif rv == TPE_PRIVILEGE: + ret['message'] = '权限不足!' + else: + ret['message'] = '未知错误!' + return self.write(json.dumps(ret).encode('utf8')) + + success = list() + failed = list() + group_failed = list() csv_filename = '' try: