Exemple #1
0
def create(db_file):
    """ Restore user from an backup sqlite database
    """
    users = {}
    print(db_file)

    if not os.path.isfile(db_file):
        print("Database file dont exist")
        exit(1)

    with sqlite3.connect(db_file, ) as connection:
        c = connection.cursor()
        c.execute("SELECT * FROM users")

        rows = c.fetchall()

        columns = [column[0] for column in c.description]

        for row in rows:
            user_dict = dict(zip(columns, row))
            key = user_dict['email'].strip().lower()
            # print(key)
            users[user_dict['email'].strip().lower()] = user_dict

    user_blacklist = []
    all_user = User.query.all()
    for u in all_user:
        key = u.email.strip().lower()
        user_blacklist.append(key)

    # print(user_blacklist)
    for key, u in users.items():
        if key not in user_blacklist:
            new = User(key, "-")
            new._password_hash = u['_password_hash']
            new._authenticator_hash = u['_authenticator_hash']
            new.firstname = u['firstname'].strip()
            new.lastname = u['lastname'].strip()
            new.admin = u['admin']
            new.phone = u['phone'].strip()
            new.organization = u['organization'].strip()
            new.authenticator_status = u['authenticator_status']
            new.authenticator_changed_date = u['authenticator_changed_date']

            new.account_created_date = u['account_created_date']
            new.last_login_date = u['last_login_date']

            new.account_verified = u['account_verified']
            new.account_locked = u['account_locked']
            new.pinIsLocked = u['pinIsLocked']
            new.failedPinAttempts = u['failedPinAttempts']
            new.failedLoginAttempts = u['failedLoginAttempts']
            new.budget = u['budget']

            workspaceManager.triggerWorkspaceHooks(WorkspaceHooks.CREATEUSER,
                                                   user=new)

            print(new)
            db.session.add(new)

        else:
            print(f"skip {key}")
    db.session.commit()
Exemple #2
0
def create_devEnv(app, db, clean=True):
    print()
    print("Create dev enviroment")
    if clean is True:
        PermissionGroup.query.delete()
        AccessgroupSpaceMap.query.delete()
        SpaceAccessGroup.query.delete()
        SpaceAccessSpace.query.delete()
        SpaceNodeMap.query.delete()
        ActionLink.query.delete()

    pAll = Permission.query.all()
    permissions = {}
    print('Detected permissions:')
    for p in pAll:
        permissions[p.name] = p

    pg = PermissionGroup(name='Supervisor')
    if 'Log.ViewLogs' in permissions:
        pg.permissions.append(permissions['Log.ViewLogs'])
    db.session.add(pg)

    usersWorkspace = workspaceManager.getWorkspace('Users')

    u = User.query.filter_by(email='*****@*****.**').first()
    if u is None:
        u = User(email='*****@*****.**', password='******', isAdmin=False)
        u.firstname = "Test"
        u.lastname = "User"
        u.organization = "Konglomerat"
        u.account_verified = True
        u.pin = "123456"
        workspaceManager.triggerWorkspaceHooks(WorkspaceHooks.CREATEUSER, user=u)
        db.session.add(u)
        data = {'username': u.firstname + " " + u.lastname}
        send_message(u, "Welcome", usersWorkspace, 'welcome.message', data, 'Roseguarden')

    s = User.query.filter_by(email='*****@*****.**').first()
    if s is None:
        s = User(email='*****@*****.**', password='******', isAdmin=False)
        s.firstname = "Super"
        s.lastname = "User"
        s.organization = "Konglomerat"
        s.account_verified = True
        s.pin = "123456"
        s.permission_groups.append(pg)
        workspaceManager.triggerWorkspaceHooks(WorkspaceHooks.CREATEUSER, user=s)
        db.session.add(s)
        data = {'username': s.firstname + " " + s.lastname}
        send_message(s, "Welcome", usersWorkspace, 'welcome.message', data, 'Roseguarden')

    a = User.query.filter_by(email='*****@*****.**').first()
    if a is None:
        a = User(email='*****@*****.**', password='******', isAdmin=True)
        a.firstname = "Test"
        a.lastname = "Admin"
        a.organization = "Konglomerat"
        a.account_verified = True
        a.pin = "123456"
        a.setAuthenticatorHash(b'$2b$12$zOn/sn5hpG02xpwvj74zruGHBGYCDgayBacy9Q9zBgM6.OEExh5Zm')
        a.authenticator_status = UserAuthenticatorStatus.VALID
        workspaceManager.triggerWorkspaceHooks(WorkspaceHooks.CREATEUSER, user=a)
        db.session.add(a)
        data = {'username': a.firstname + " " + a.lastname}
        send_message(a, "Welcome", usersWorkspace, 'welcome.message', data, 'Roseguarden')

    uva = User.query.filter_by(email='*****@*****.**').first()
    if uva is None:
        uva = User(email='*****@*****.**', password='******', isAdmin=True)
        uva.firstname = "Test"
        uva.lastname = "Unverifed"
        uva.organization = "Konglomerat"
        uva.account_verified = False
        uva.pin = "123456"
        workspaceManager.triggerWorkspaceHooks(WorkspaceHooks.CREATEUSER, user=uva)
        db.session.add(uva)
        data = {'username': uva.firstname + " " + uva.lastname}
        send_message(uva, "Welcome", usersWorkspace, 'welcome.message', data, 'Roseguarden')

    node_ident = {
        "nodename": "Door 1",
        "classname": "Door",
        "classworkspace": "Access",
        "classid": "00:01:AB:EF:19:D8:00:11",
        "firmware_version": "0.1.2",
        "firmware_compiled_at": "2007-12-22T18:21:01",
        "firmware_flashed_at": "2007-12-24T11:31:02",
        "hardware_version": "0.1.0"
    }
    node_fingerprint = "43:51:43:A1:B5:FC:8B:B7:0A:3A:A9:B1:0F:66:73:A8:73:A8:19:B1"
    node_authentification = "Kol-Bi-Hop-Ban-Gan-To-Sep+129"

    n = Node.query.filter_by(fingerprint=node_fingerprint).first()
    if n is None:
        nodeManager.create_node_from_identification(node_ident, node_fingerprint, node_authentification)
        nodeManager.authorizeNode(node_fingerprint)
        n = Node.query.filter_by(fingerprint=node_fingerprint).first()

    sas = SpaceAccessSpace(name="Garage workshop")
    sas.description = "The garage workshop"
    sas.entrance_nodes = [n]
    db.session.add(sas)

    ag = SpaceAccessGroup(name="Friends (full access)")
    ag.spaces = [sas]

    s = User.query.filter_by(email='*****@*****.**').first()
    if s is not None:
        ag.users.append(s)
    if a is not None:
        ag.users.append(a)

    ag.note = "Friends with full access"
    ag.access_type = SpaceAccessType.UNLIMITED
    ag.daily_access_start_time = arrow.get('00:00', 'HH:mm')
    ag.daily_access_end_time = arrow.get('23:59', 'HH:mm')
    ag.door_access_mask = 3
    ag.day_access_mask = 127
    ag.access_expires_as_default = False
    ag.access_expires_default_days = 365
    db.session.add(ag)

    # p = Permission(user=s, name= ViewLogs)
    pAll = Permission.query.all()
    print(pAll)

    # send_mail(["*****@*****.**"], "Welcome", usersWorkspace, 'welcome.mail', data )
    # print(generateActionLink(usersWorkspace, 'verifyUser', { 'email' : "*****@*****.**" }, "dashboard"))

    db.session.commit()

    # userManager.removeUser('*****@*****.**')

    all_user = User.query.all()
    print(all_user)
    for user in all_user:
        print(f' User: {user} {user.password} ')

    print("n")

    print(jobManager)