def _create_and_destroy_user(automation=False, role="user"): username = u'test123-' + get_random_string( size=5, from_ascii=ord('a'), to_ascii=ord('z')) password = u'Ischbinwischtisch' edit_users(_mk_user_obj(username, password, automation=automation)) config.load_config() profile_path = Path(paths.omd_root, "var", "check_mk", "web", username) profile_path.joinpath('cached_profile.mk').write_text( str( repr({ 'alias': u'Test user', 'contactgroups': ['all'], 'disable_notifications': {}, 'email': u'*****@*****.**' % username, 'fallback_contact': False, 'force_authuser': False, 'locked': False, 'language': 'de', 'pager': '', 'roles': [role], 'start_url': None, 'ui_theme': 'modern-dark', }))) yield username, password delete_users([username]) # User directories are not deleted by WATO by default. Clean it up here! shutil.rmtree(str(profile_path))
def create_and_destroy_user(*, automation=False, role="user", username=None): if username is None: username = "******" + get_random_string( size=5, from_ascii=ord("a"), to_ascii=ord("z")) password = "******" edit_users(_mk_user_obj(username, password, automation, role)) config.load_config() profile_path = Path(cmk.utils.paths.omd_root, "var", "check_mk", "web", username) profile_path.joinpath("cached_profile.mk").write_text( str( repr({ "alias": "Test user", "contactgroups": ["all"], "disable_notifications": {}, "email": "*****@*****.**" % username, "fallback_contact": False, "force_authuser": False, "locked": False, "language": "de", "pager": "", "roles": [role], "start_url": None, "ui_theme": "modern-dark", }))) yield username, password delete_users([username]) # User directories are not deleted by WATO by default. Clean it up here! shutil.rmtree(str(profile_path))
def delete_user(params): """Delete a user""" username = params['username'] try: delete_users([username]) except MKUserError: return problem( 404, f'User "{username}" is not known.', 'The user to delete does not exist. Please check for eventual misspellings.') return Response(status=204)
def _bulk_delete_users_after_confirm(self): selected_users = [] users = userdb.load_users() for varname, _value in html.request.itervars(prefix="_c_user_"): if html.get_checkbox(varname): user = base64.b64decode( varname.split("_c_user_")[-1].encode("utf-8")).decode("utf-8") if user in users: selected_users.append(user) if selected_users: delete_users(selected_users)
def delete_user(params): """Delete a user""" username = params["username"] try: delete_users([username]) except MKUserError: return problem( status=404, title=f'User "{username}" is not known.', detail= "The user to delete does not exist. Please check for eventual misspellings.", ) return Response(status=204)
def _create_and_destroy_user(automation=False): username = u'test123-' + get_random_string( size=5, from_ascii=ord('a'), to_ascii=ord('z')) password = u'Ischbinwischtisch' edit_users(_mk_user_obj(username, password, automation=automation)) config.load_config() yield username, password delete_users([username]) # User directories are not deleted by WATO by default. Clean it up here! shutil.rmtree(paths.omd_root + "/var/check_mk/web/" + username)
def _create_and_destroy_user(automation=False): contacts_mk = cmk.utils.paths.omd_root + "/etc/check_mk/conf.d/wato/contacts.mk" contact_existed = os.path.exists(contacts_mk) _touch(cmk.utils.paths.htpasswd_file) _touch(cmk.utils.paths.omd_root + '/etc/diskspace.conf') _makepath(cmk.utils.paths.var_dir + "/wato/auth") _makepath(config.config_dir) username = u'test123-' + get_random_string(size=5, from_ascii=ord('a'), to_ascii=ord('z')) password = u'Ischbinwischtisch' edit_users(_mk_user_obj(username, password, automation=automation)) config.load_config() yield username, password delete_users([username]) if not contact_existed: os.unlink(contacts_mk)
def action(self): if html.request.var('_delete'): delid = html.request.get_unicode_input("_delete") c = wato_confirm( _("Confirm deletion of user %s") % delid, _("Do you really want to delete the user %s?") % delid) if c: delete_users([delid]) elif c is False: return "" elif html.request.var('_sync') and html.check_transaction(): try: job = userdb.UserSyncBackgroundJob() job.set_function(job.do_sync, add_to_changelog=True, enforce_sync=True, load_users_func=userdb.load_users, save_users_func=userdb.save_users) try: job.start() except background_job.BackgroundJobAlreadyRunning as e: raise MKUserError( None, _("Another synchronization job is already running: %s") % e) self._job_snapshot = job.get_status_snapshot() except Exception: logger.exception("error syncing users") raise MKUserError( None, traceback.format_exc().replace('\n', '<br>\n')) elif html.request.var("_bulk_delete_users"): return self._bulk_delete_users_after_confirm() elif html.check_transaction(): action_handler = gui_background_job.ActionHandler( self.breadcrumb()) action_handler.handle_actions() if action_handler.did_acknowledge_job(): self._job_snapshot = userdb.UserSyncBackgroundJob( ).get_status_snapshot() return None, _("Synchronization job acknowledged")
def _bulk_delete_users_after_confirm(self): selected_users = [] users = userdb.load_users() for varname, _value in html.request.itervars(prefix="_c_user_"): if html.get_checkbox(varname): user = base64.b64decode(varname.split("_c_user_")[-1]).decode("utf-8") if user in users: selected_users.append(user) if selected_users: c = wato_confirm( _("Confirm deletion of %d users") % len(selected_users), _("Do you really want to delete %d users?") % len(selected_users)) if c: delete_users(selected_users) elif c is False: return ""
def action(self) -> ActionResult: if not html.check_transaction(): return redirect(self.mode_url()) if html.request.var('_delete'): delete_users([html.request.get_unicode_input("_delete")]) elif html.request.var('_sync'): try: job = userdb.UserSyncBackgroundJob() job.set_function(job.do_sync, add_to_changelog=True, enforce_sync=True, load_users_func=userdb.load_users, save_users_func=userdb.save_users) try: job.start() except background_job.BackgroundJobAlreadyRunning as e: raise MKUserError(None, _("Another synchronization job is already running: %s") % e) self._job_snapshot = job.get_status_snapshot() except Exception: logger.exception("error syncing users") raise MKUserError(None, traceback.format_exc().replace('\n', '<br>\n')) elif html.request.var("_bulk_delete_users"): self._bulk_delete_users_after_confirm() else: action_handler = gui_background_job.ActionHandler(self.breadcrumb()) action_handler.handle_actions() if action_handler.did_acknowledge_job(): self._job_snapshot = userdb.UserSyncBackgroundJob().get_status_snapshot() flash(_("Synchronization job acknowledged")) return redirect(self.mode_url())