Source code for isomer.provisions.user

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# Isomer - The distributed application framework
# ==============================================
# Copyright (C) 2011-2020 Heiko 'riot' Weinen <riot@c-base.org> and others.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""

Provisioning: User
==================

Contains
--------

Just creates a fulltext searchable index over the username field.


"""

from isomer.logger import isolog, warn

from uuid import uuid4

Users = [{"name": "System", "uuid": str(uuid4()), "roles": ["admin", "system", "crew"]}]


[docs]def provision_system_user( items, database_name, overwrite=False, clear=False, skip_user_check=False ): """Provision a system user""" from isomer.provisions.base import provisionList from isomer.database import objectmodels # TODO: Add a root user and make sure owner can access it later. # Setting up details and asking for a password here is not very useful, # since this process is usually run automated. if overwrite is True: isolog("Refusing to overwrite system user!", lvl=warn, emitter="PROVISIONS") overwrite = False system_user_count = objectmodels["user"].count({"name": "System"}) if system_user_count == 0 or clear is False: provisionList(Users, "user", overwrite, clear, skip_user_check=True) isolog("Provisioning: Users: Done.", emitter="PROVISIONS") else: isolog("System user already present.", lvl=warn, emitter="PROVISIONS")
provision = {"data": Users, "method": provision_system_user}