예제 #1
0
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))
예제 #2
0
파일: users.py 프로젝트: gradecke/checkmk
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))
예제 #3
0
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)
예제 #4
0
파일: users.py 프로젝트: arusa/checkmk
    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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
파일: users.py 프로젝트: majma24/checkmk
    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")
예제 #9
0
    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 ""
예제 #10
0
파일: users.py 프로젝트: arusa/checkmk
    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())