Merge branch '99-can-t-install-velero-with-flask-cli-app-install' into 'main'
Resolve "Can't install Velero with `flask cli app install`" Closes #99 See merge request stackspin/dashboard!58
This commit is contained in:
commit
0ebc0f4768
7 changed files with 66 additions and 32 deletions
|
@ -4,6 +4,7 @@ Hydra for OIDC sessions and MariaDB for application and role specifications.
|
||||||
The application provides also several command line options to interact with
|
The application provides also several command line options to interact with
|
||||||
the user entries in the database(s)"""
|
the user entries in the database(s)"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import hydra_client
|
import hydra_client
|
||||||
|
@ -68,7 +69,7 @@ def create_app(slug, name, external_url = None):
|
||||||
|
|
||||||
if app_obj:
|
if app_obj:
|
||||||
current_app.logger.info(f"App definition: {name} ({slug}) already exists in database")
|
current_app.logger.info(f"App definition: {name} ({slug}) already exists in database")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
if (external_url):
|
if (external_url):
|
||||||
obj.external = True
|
obj.external = True
|
||||||
|
@ -102,13 +103,13 @@ def delete_app(slug):
|
||||||
|
|
||||||
if not app_obj:
|
if not app_obj:
|
||||||
current_app.logger.info("Not found")
|
current_app.logger.info("Not found")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
app_status = app_obj.get_status()
|
app_status = app_obj.get_status()
|
||||||
if app_status.installed and not app_obj.external:
|
if app_status.installed and not app_obj.external:
|
||||||
current_app.logger.info("Can not delete installed application, run"
|
current_app.logger.info("Can not delete installed application, run"
|
||||||
" 'uninstall' first")
|
" 'uninstall' first")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
app_obj.delete()
|
app_obj.delete()
|
||||||
current_app.logger.info("Success.")
|
current_app.logger.info("Success.")
|
||||||
|
@ -127,11 +128,10 @@ def uninstall_app(slug):
|
||||||
|
|
||||||
if not app_obj:
|
if not app_obj:
|
||||||
current_app.logger.info("Not found")
|
current_app.logger.info("Not found")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
app_obj.uninstall()
|
app_obj.uninstall()
|
||||||
current_app.logger.info("Success.")
|
current_app.logger.info("Success.")
|
||||||
return
|
|
||||||
|
|
||||||
@app_cli.command("status")
|
@app_cli.command("status")
|
||||||
@click.argument("slug")
|
@click.argument("slug")
|
||||||
|
@ -145,7 +145,7 @@ def status_app(slug):
|
||||||
|
|
||||||
if not app:
|
if not app:
|
||||||
current_app.logger.error(f"App {slug} does not exist")
|
current_app.logger.error(f"App {slug} does not exist")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
current_app.logger.info(app.get_status())
|
current_app.logger.info(app.get_status())
|
||||||
|
|
||||||
|
@ -161,12 +161,12 @@ def install_app(slug):
|
||||||
|
|
||||||
if not app:
|
if not app:
|
||||||
current_app.logger.error(f"App {slug} does not exist")
|
current_app.logger.error(f"App {slug} does not exist")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
if app.external:
|
if app.external:
|
||||||
current_app.logger.info(
|
current_app.logger.info(
|
||||||
f"App {slug} is an external app and can not be provisioned automatically")
|
f"App {slug} is an external app and can not be provisioned automatically")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
current_status = app.get_status()
|
current_status = app.get_status()
|
||||||
if not current_status.installed:
|
if not current_status.installed:
|
||||||
|
@ -188,7 +188,7 @@ def roles_app(slug):
|
||||||
|
|
||||||
if not app:
|
if not app:
|
||||||
current_app.logger.error(f"App {slug} does not exist")
|
current_app.logger.error(f"App {slug} does not exist")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
current_app.logger.info("Roles: ")
|
current_app.logger.info("Roles: ")
|
||||||
for role in app.roles:
|
for role in app.roles:
|
||||||
|
@ -217,16 +217,16 @@ def setrole(email, app_slug, role):
|
||||||
|
|
||||||
if role not in ("admin", "user"):
|
if role not in ("admin", "user"):
|
||||||
print("At this point only the roles 'admin' and 'user' are accepted")
|
print("At this point only the roles 'admin' and 'user' are accepted")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
if not user:
|
if not user:
|
||||||
print("User not found. Abort")
|
print("User not found. Abort")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
app_obj = db.session.query(App).filter(App.slug == app_slug).first()
|
app_obj = db.session.query(App).filter(App.slug == app_slug).first()
|
||||||
if not app_obj:
|
if not app_obj:
|
||||||
print("App not found. Abort.")
|
print("App not found. Abort.")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
role_obj = (
|
role_obj = (
|
||||||
db.session.query(AppRole)
|
db.session.query(AppRole)
|
||||||
|
@ -291,7 +291,7 @@ def update_user(email, field, value):
|
||||||
user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
||||||
if not user:
|
if not user:
|
||||||
current_app.logger.error(f"User with email {email} not found.")
|
current_app.logger.error(f"User with email {email} not found.")
|
||||||
return
|
sys.exit(1)
|
||||||
|
|
||||||
if field == "name":
|
if field == "name":
|
||||||
user.name = value
|
user.name = value
|
||||||
|
@ -313,7 +313,7 @@ def delete_user(email):
|
||||||
user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
||||||
if not user:
|
if not user:
|
||||||
current_app.logger.error(f"User with email {email} not found.")
|
current_app.logger.error(f"User with email {email} not found.")
|
||||||
return
|
sys.exit(1)
|
||||||
user.delete()
|
user.delete()
|
||||||
|
|
||||||
|
|
||||||
|
@ -344,8 +344,6 @@ def setpassword_user(email, password):
|
||||||
"""Set a password for an account
|
"""Set a password for an account
|
||||||
:param email: email address of account to set a password for
|
:param email: email address of account to set a password for
|
||||||
:param password: password to be set
|
:param password: password to be set
|
||||||
:return: true on success, false if not set (too weak)
|
|
||||||
:rtype: boolean
|
|
||||||
:raise: exception if unexepted error happens
|
:raise: exception if unexepted error happens
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -362,7 +360,7 @@ def setpassword_user(email, password):
|
||||||
kratos_user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
kratos_user = KratosUser.find_by_email(KRATOS_ADMIN, email)
|
||||||
if kratos_user is None:
|
if kratos_user is None:
|
||||||
current_app.logger.error(f"User with email '{email}' not found")
|
current_app.logger.error(f"User with email '{email}' not found")
|
||||||
return False
|
sys.exit(1)
|
||||||
|
|
||||||
# Get a recovery URL
|
# Get a recovery URL
|
||||||
url = kratos_user.get_recovery_link()
|
url = kratos_user.get_recovery_link()
|
||||||
|
@ -372,15 +370,13 @@ def setpassword_user(email, password):
|
||||||
|
|
||||||
except Exception as error: # pylint: disable=broad-except
|
except Exception as error: # pylint: disable=broad-except
|
||||||
current_app.logger.error(f"Error while setting password: {error}")
|
current_app.logger.error(f"Error while setting password: {error}")
|
||||||
return False
|
sys.exit(1)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
current_app.logger.info("Success setting password")
|
current_app.logger.info("Success setting password")
|
||||||
else:
|
else:
|
||||||
current_app.logger.error("Failed to set password. Password too weak?")
|
current_app.logger.error("Failed to set password. Password too weak?")
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
@user_cli.command("list")
|
@user_cli.command("list")
|
||||||
def list_user():
|
def list_user():
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
"""add-velero-as-app
|
||||||
|
|
||||||
|
Revision ID: 3fa0c38ea1ac
|
||||||
|
Revises: e08df0bef76f
|
||||||
|
Create Date: 2022-10-13 09:40:44.290319
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '3fa0c38ea1ac'
|
||||||
|
down_revision = 'e08df0bef76f'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# Add monitoring app
|
||||||
|
op.execute(f'INSERT IGNORE INTO app (`name`, `slug`) VALUES ("Velero","velero")')
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
pass
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
||||||
"extends": [
|
|
||||||
"local>stackspin/renovate-config:default"
|
|
||||||
],
|
|
||||||
"assignees": [
|
|
||||||
"luka"
|
|
||||||
]
|
|
||||||
}
|
|
21
public/assets/velero.svg
Normal file
21
public/assets/velero.svg
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||||
|
<svg width="6cm" height="6cm" viewBox="6 5 106 106" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs/>
|
||||||
|
<g id="Background">
|
||||||
|
<g>
|
||||||
|
<path style="fill: none; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" d="M 112.1 60.8 C 112.1,60.1 112.2,59.4 112.2,58.8 C 112.2,58.1 112.2,57.4 112.1,56.8 C 112.1,58.1333 112.1,59.4667 112.1,60.8"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 96.9 92.9 C 93.6,92.9 92,94.1 90.2,95.6 C 88.2,97.2 86,99 81.6,99 C 77.3,99 75,97.2 73,95.6 C 71.2,94.2 69.6,92.9 66.3,92.9 C 63,92.9 61.4,94.1 59.6,95.6 C 57.6,97.2 55.4,99 51,99 C 46.7,99 44.4,97.2 42.4,95.6 C 40.6,94.2 39,92.9 35.7,92.9 C 32.4,92.9 30.8,94.1 29,95.6 C 27.7,96.6 26.3,97.8 24.2,98.4 C 32.5,105.7 43.1,110.4 54.7,111.4 C 55,111.4 55.3,111.5 55.7,111.5 C 56.8,111.6 58,111.6 59.1,111.6 C 60.3,111.6 61.4,111.5 62.5,111.5 C 62.8,111.5 63.1,111.5 63.5,111.4 C 77.7,110.2 90.3,103.4 99.1,93.2 C 98.6,93.1 97.8,92.9 96.9,92.9z"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 20.7 53.5 C 24.3,53.5 26,52.1 27.9,50.6 C 29.9,49 31.9,47.4 35.9,47.4 C 39.9,47.4 42,49 43.9,50.6 C 45.8,52.1 47.5,53.5 51.1,53.5 C 54.7,53.5 56.4,52.1 58.3,50.6 C 60.3,49 62.3,47.4 66.3,47.4 C 70.3,47.4 72.4,49 74.3,50.6 C 76.2,52.1 77.9,53.5 81.5,53.5 C 85.1,53.5 86.8,52.1 88.7,50.6 C 90.7,49 92.7,47.4 96.7,47.4 C 100.7,47.4 102.8,49 104.7,50.6 C 106.5,52.1 108.3,53.4 111.7,53.5 C 111.2,48.7 110.1,44 108.4,39.7 C 106.6,39.1 105.3,38.1 104,37.1 C 102.1,35.6 100.3,34.2 96.6,34.2 C 92.9,34.2 91.1,35.6 89.2,37.1 C 87.3,38.6 85.3,40.2 81.3,40.2 C 77.3,40.2 75.4,38.6 73.4,37.1 C 71.5,35.6 69.7,34.2 66,34.2 C 62.3,34.2 60.5,35.6 58.6,37.1 C 56.7,38.6 54.7,40.2 50.7,40.2 C 46.7,40.2 44.8,38.6 42.8,37.1 C 40.9,35.6 39.1,34.2 35.4,34.2 C 31.7,34.2 29.9,35.6 28,37.1 C 26.1,38.6 24.1,40.2 20.1,40.2 C 16.1,40.2 14.2,38.6 12.2,37.1 C 11.8,36.8 11.3,36.4 10.9,36.1 C 9.2,39.7 7.8,43.6 7,47.7 C 9.7,48.2 11.3,49.4 12.9,50.7 C 15.4,52.1 17.1,53.5 20.7,53.5z"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 20.7 39.3 C 24.4,39.3 26.2,37.9 28.1,36.4 C 30,34.9 32,33.3 36,33.3 C 40,33.3 41.9,34.9 43.9,36.4 C 45.8,37.9 47.6,39.3 51.3,39.3 C 55,39.3 56.8,37.9 58.7,36.4 C 60.6,34.9 62.6,33.3 66.6,33.3 C 70.6,33.3 72.5,34.9 74.5,36.4 C 76.4,37.9 78.2,39.3 81.9,39.3 C 85.6,39.3 87.4,37.9 89.3,36.4 C 91.2,34.9 93.2,33.3 97.2,33.3 C 101.2,33.3 103.1,34.9 105.1,36.4 C 106.2,37.2 107.2,38.1 108.5,38.6 C 100.6,19.4 81.6,5.8 59.6,5.8 C 38.8,5.8 20.9,17.8 12.2,35.3 C 12.7,35.7 13.2,36 13.6,36.4 C 15.2,37.9 17,39.3 20.7,39.3z"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 96.9 78.2 C 93.5,78.2 91.9,79.5 90.1,81 C 88.2,82.5 86,84.3 81.7,84.3 C 77.5,84.3 75.3,82.6 73.3,81 C 71.4,79.5 69.8,78.2 66.5,78.2 C 63.1,78.2 61.5,79.5 59.7,81 C 57.8,82.5 55.6,84.3 51.3,84.3 C 47.1,84.3 44.9,82.6 42.9,81 C 41,79.5 39.4,78.2 36.1,78.2 C 32.7,78.2 31.1,79.5 29.3,81 C 27.4,82.5 25.2,84.3 20.9,84.3 C 16.7,84.3 14.5,82.6 12.5,81 C 12,80.6 11.5,80.2 11,79.9 C 13.6,85.9 17.3,91.3 21.9,95.9 C 24.5,95.7 25.9,94.5 27.5,93.3 C 29.5,91.7 31.7,89.9 36.1,89.9 C 40.4,89.9 42.7,91.7 44.7,93.3 C 46.5,94.7 48.1,96 51.4,96 C 54.7,96 56.3,94.8 58.1,93.3 C 60.1,91.7 62.3,89.9 66.7,89.9 C 71,89.9 73.3,91.7 75.3,93.3 C 77.1,94.7 78.7,96 82,96 C 85.3,96 86.9,94.8 88.7,93.3 C 90.7,91.7 92.9,89.9 97.3,89.9 C 99.1,89.9 100.6,90.2 101.8,90.7 C 103.7,88.2 105.3,85.6 106.8,82.8 C 105.8,82.2 105,81.6 104.2,81 C 101.9,79.5 100.2,78.2 96.9,78.2z"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 112 54.9 C 108,54.9 106,53.3 104,51.7 C 102.1,50.2 100.4,48.8 96.8,48.8 C 93.2,48.8 91.5,50.2 89.6,51.7 C 87.6,53.3 85.6,54.9 81.6,54.9 C 77.6,54.9 75.5,53.3 73.6,51.7 C 71.7,50.2 70,48.8 66.4,48.8 C 62.8,48.8 61.1,50.2 59.2,51.7 C 57.2,53.3 55.2,54.9 51.2,54.9 C 47.2,54.9 45.1,53.3 43.2,51.7 C 41.3,50.2 39.6,48.8 36,48.8 C 32.4,48.8 30.7,50.2 28.8,51.7 C 26.8,53.3 24.8,54.9 20.8,54.9 C 16.8,54.9 14.7,53.3 12.8,51.7 C 11.3,50.5 9.8,49.4 7.5,49 C 7,51.5 6.7,54.1 6.6,56.7 C 6.6,57.4 6.5,58.1 6.5,58.7 C 6.5,59.4 6.5,60.1 6.6,60.7 C 6.6,61 6.6,61.3 6.6,61.6 C 10.1,61.9 12,63.4 13.8,64.8 C 15.6,66.2 17.3,67.6 20.8,67.6 C 24.3,67.6 26,66.2 27.8,64.8 C 29.7,63.3 31.9,61.6 36,61.6 C 40.1,61.6 42.3,63.3 44.2,64.8 C 46,66.2 47.7,67.6 51.2,67.6 C 54.7,67.6 56.4,66.2 58.2,64.8 C 60.1,63.3 62.3,61.6 66.4,61.6 C 70.5,61.6 72.7,63.3 74.6,64.8 C 76.4,66.2 78.1,67.6 81.6,67.6 C 85.1,67.6 86.8,66.2 88.6,64.8 C 90.5,63.3 92.7,61.6 96.8,61.6 C 100.9,61.6 103.1,63.3 105,64.8 C 106.7,66.1 108.3,67.4 111.3,67.6 C 111.6,66 111.8,64.4 111.9,62.7 C 111.9,62.1 112,61.4 112,60.8 C 112,59.4333 112,58.0667 112,56.7 C 112.1,56 112,54.9 112,54.9z"/>
|
||||||
|
<path style="fill: #009bdb; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 96.9 63.5 C 93.4,63.5 91.7,64.9 89.9,66.3 C 88,67.8 85.8,69.5 81.7,69.5 C 77.6,69.5 75.4,67.8 73.5,66.3 C 71.7,64.9 70,63.5 66.5,63.5 C 63,63.5 61.3,64.9 59.5,66.3 C 57.6,67.8 55.4,69.5 51.3,69.5 C 47.2,69.5 45,67.8 43.1,66.3 C 41.3,64.9 39.6,63.5 36.1,63.5 C 32.6,63.5 30.9,64.9 29.1,66.3 C 27.2,67.8 25,69.5 20.9,69.5 C 16.8,69.5 14.6,67.8 12.7,66.3 C 11.1,65 9.6,63.8 6.9,63.5 C 7.3,68 8.3,72.2 9.7,76.3 C 11.6,76.9 12.9,78 14.1,79 C 16,80.5 17.6,81.8 20.9,81.8 C 24.3,81.8 25.9,80.5 27.7,79 C 29.6,77.5 31.8,75.7 36.1,75.7 C 40.3,75.7 42.5,77.4 44.5,79 C 46.4,80.5 48,81.8 51.3,81.8 C 54.7,81.8 56.3,80.5 58.1,79 C 60,77.5 62.2,75.7 66.5,75.7 C 70.7,75.7 72.9,77.4 74.9,79 C 76.8,80.5 78.4,81.8 81.7,81.8 C 85.1,81.8 86.7,80.5 88.5,79 C 90.4,77.5 92.6,75.7 96.9,75.7 C 101.1,75.7 103.3,77.4 105.3,79 C 106,79.6 106.7,80.1 107.5,80.6 C 109.1,77.1 110.3,73.4 111.1,69.5 C 107.6,69.2 105.7,67.7 103.9,66.3 C 102.1,64.9 100.3,63.5 96.9,63.5z"/>
|
||||||
|
<path style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 88.3 93.3 C 86.5,94.7 84.9,96 81.6,96 C 78.3,96 76.7,94.8 74.9,93.3 C 72.9,91.7 70.7,89.9 66.3,89.9 C 62,89.9 59.7,91.7 57.7,93.3 C 55.9,94.7 54.3,96 51,96 C 47.7,96 46.1,94.8 44.3,93.3 C 42.3,91.7 40.1,89.9 35.7,89.9 C 31.4,89.9 29.1,91.7 27.1,93.3 C 25.5,94.6 24.1,95.7 21.5,95.9 C 22.4,96.8 23.3,97.6 24.2,98.4 C 26.3,97.8 27.7,96.6 29,95.6 C 30.8,94.2 32.4,92.9 35.7,92.9 C 39,92.9 40.6,94.1 42.4,95.6 C 44.4,97.2 46.6,99 51,99 C 55.3,99 57.6,97.2 59.6,95.6 C 61.4,94.2 63,92.9 66.3,92.9 C 69.6,92.9 71.2,94.1 73,95.6 C 75,97.2 77.2,99 81.6,99 C 85.9,99 88.2,97.2 90.2,95.6 C 92,94.2 93.6,92.9 96.9,92.9 C 97.8,92.9 98.6,93 99.3,93.2 C 100,92.4 100.7,91.5 101.3,90.7 C 100.1,90.2 98.6,89.9 96.8,89.9 C 92.5,89.9 90.3,91.7 88.3,93.3z"/>
|
||||||
|
<path style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 96.9 75.8 C 92.7,75.8 90.5,77.5 88.5,79.1 C 86.6,80.6 85,81.9 81.7,81.9 C 78.3,81.9 76.7,80.6 74.9,79.1 C 73,77.6 70.8,75.8 66.5,75.8 C 62.3,75.8 60.1,77.5 58.1,79.1 C 56.2,80.6 54.6,81.9 51.3,81.9 C 47.9,81.9 46.3,80.6 44.5,79.1 C 42.6,77.6 40.4,75.8 36.1,75.8 C 31.9,75.8 29.7,77.5 27.7,79.1 C 25.8,80.6 24.2,81.9 20.9,81.9 C 17.5,81.9 15.9,80.6 14.1,79.1 C 12.9,78.1 11.6,77.1 9.7,76.4 C 10.1,77.6 10.6,78.7 11.1,79.9 C 11.6,80.2 12.1,80.6 12.6,81 C 14.5,82.5 16.7,84.3 21,84.3 C 25.2,84.3 27.4,82.6 29.4,81 C 31.3,79.5 32.9,78.2 36.2,78.2 C 39.6,78.2 41.2,79.5 43,81 C 44.9,82.5 47.1,84.3 51.4,84.3 C 55.6,84.3 57.8,82.6 59.8,81 C 61.7,79.5 63.3,78.2 66.6,78.2 C 70,78.2 71.6,79.5 73.4,81 C 75.3,82.5 77.5,84.3 81.8,84.3 C 86,84.3 88.2,82.6 90.2,81 C 92.1,79.5 93.7,78.2 97,78.2 C 100.4,78.2 102,79.5 103.8,81 C 104.6,81.6 105.4,82.3 106.4,82.8 C 106.8,82.1 107.1,81.3 107.5,80.6 C 106.7,80.2 106.1,79.6 105.3,79 C 103.3,77.5 101.1,75.8 96.9,75.8z"/>
|
||||||
|
<path style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 96.9 61.6 C 92.8,61.6 90.6,63.3 88.7,64.8 C 86.9,66.2 85.2,67.6 81.7,67.6 C 78.2,67.6 76.5,66.2 74.7,64.8 C 72.8,63.3 70.6,61.6 66.5,61.6 C 62.4,61.6 60.2,63.3 58.3,64.8 C 56.5,66.2 54.8,67.6 51.3,67.6 C 47.8,67.6 46.1,66.2 44.3,64.8 C 42.4,63.3 40.2,61.6 36.1,61.6 C 32,61.6 29.8,63.3 27.9,64.8 C 26.1,66.2 24.4,67.6 20.9,67.6 C 17.4,67.6 15.7,66.2 13.9,64.8 C 12.2,63.4 10.2,61.9 6.7,61.6 C 6.7,62.2 6.8,62.9 6.8,63.5 C 9.5,63.8 11,65 12.6,66.3 C 14.5,67.8 16.7,69.5 20.8,69.5 C 24.9,69.5 27.1,67.8 29,66.3 C 30.8,64.9 32.5,63.5 36,63.5 C 39.5,63.5 41.2,64.9 43,66.3 C 44.9,67.8 47.1,69.5 51.2,69.5 C 55.3,69.5 57.5,67.8 59.4,66.3 C 61.2,64.9 62.9,63.5 66.4,63.5 C 69.9,63.5 71.6,64.9 73.4,66.3 C 75.3,67.8 77.5,69.5 81.6,69.5 C 85.7,69.5 87.9,67.8 89.8,66.3 C 91.6,64.9 93.3,63.5 96.8,63.5 C 100.3,63.5 102,64.9 103.8,66.3 C 105.5,67.7 107.5,69.2 111,69.5 C 111.1,68.9 111.2,68.2 111.3,67.6 C 108.3,67.4 106.7,66.2 105,64.8 C 103.2,63.3 101,61.6 96.9,61.6z"/>
|
||||||
|
<path style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 20.7 54.9 C 24.7,54.9 26.8,53.3 28.7,51.7 C 30.6,50.2 32.3,48.8 35.9,48.8 C 39.5,48.8 41.2,50.2 43.1,51.7 C 45.1,53.3 47.1,54.9 51.1,54.9 C 55.1,54.9 57.2,53.3 59.1,51.7 C 61,50.2 62.7,48.8 66.3,48.8 C 69.9,48.8 71.6,50.2 73.5,51.7 C 75.5,53.3 77.5,54.9 81.5,54.9 C 85.5,54.9 87.6,53.3 89.5,51.7 C 91.4,50.2 93.1,48.8 96.7,48.8 C 100.3,48.8 102,50.2 103.9,51.7 C 105.8,53.2 107.9,54.8 111.9,54.9 C 111.9,54.8667 111.9,54.8333 111.9,54.8 C 111.9,54.4 111.8,54 111.8,53.5 C 108.4,53.4 106.6,52.1 104.8,50.6 C 102.8,49 100.8,47.4 96.8,47.4 C 92.8,47.4 90.7,49 88.8,50.6 C 86.9,52.1 85.2,53.5 81.6,53.5 C 78,53.5 76.3,52.1 74.4,50.6 C 72.4,49 70.4,47.4 66.4,47.4 C 62.4,47.4 60.3,49 58.4,50.6 C 56.5,52.1 54.8,53.5 51.2,53.5 C 47.6,53.5 45.9,52.1 44,50.6 C 42,49 40,47.4 36,47.4 C 32,47.4 29.9,49 28,50.6 C 26.1,52.1 24.4,53.5 20.8,53.5 C 17.2,53.5 15.5,52.1 13.6,50.6 C 12,49.3 10.4,48.1 7.7,47.6 C 7.6,48 7.5,48.5 7.4,48.9 C 9.8,49.3 11.2,50.4 12.7,51.6 C 14.6,53.3 16.6,54.9 20.7,54.9z"/>
|
||||||
|
<path style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 0; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 20.7 40.2 C 24.7,40.2 26.6,38.6 28.6,37.1 C 30.5,35.6 32.3,34.2 36,34.2 C 39.7,34.2 41.5,35.6 43.4,37.1 C 45.3,38.6 47.3,40.2 51.3,40.2 C 55.3,40.2 57.2,38.6 59.2,37.1 C 61.1,35.6 62.9,34.2 66.6,34.2 C 70.3,34.2 72.1,35.6 74,37.1 C 75.9,38.6 77.9,40.2 81.9,40.2 C 85.9,40.2 87.8,38.6 89.8,37.1 C 91.7,35.6 93.5,34.2 97.2,34.2 C 100.9,34.2 102.7,35.6 104.6,37.1 C 105.9,38.1 107.1,39.1 109,39.7 C 108.9,39.4 108.7,39 108.6,38.7 C 107.3,38.1 106.2,37.3 105.2,36.5 C 103.3,35 101.3,33.4 97.3,33.4 C 93.3,33.4 91.4,35 89.4,36.5 C 87.5,38 85.7,39.4 82,39.4 C 78.3,39.4 76.5,38 74.6,36.5 C 72.7,35 70.7,33.4 66.7,33.4 C 62.7,33.4 60.8,35 58.8,36.5 C 56.9,38 55.1,39.4 51.4,39.4 C 47.7,39.4 45.9,38 44,36.5 C 42.1,35 40.1,33.4 36.1,33.4 C 32.1,33.4 30.2,35 28.2,36.5 C 26.3,38 24.5,39.4 20.8,39.4 C 17.1,39.4 15.3,38 13.4,36.5 C 12.9,36.1 12.5,35.8 12,35.4 C 11.9,35.6 11.7,35.9 11.6,36.2 C 12,36.5 12.5,36.8 12.9,37.2 C 14.7,38.6 16.7,40.2 20.7,40.2z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": [
|
"extends": [
|
||||||
"local>stackspin/renovate-config"
|
"local>stackspin/renovate-config:default"
|
||||||
],
|
],
|
||||||
"npm": {
|
"npm": {
|
||||||
"enabled": false
|
"enabled": false
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { Banner, Modal, ConfirmationModal } from 'src/components';
|
||||||
import { Input, Select } from 'src/components/Form';
|
import { Input, Select } from 'src/components/Form';
|
||||||
import { User, UserRole, useUsers } from 'src/services/users';
|
import { User, UserRole, useUsers } from 'src/services/users';
|
||||||
import { useAuth } from 'src/services/auth';
|
import { useAuth } from 'src/services/auth';
|
||||||
|
import { HIDDEN_APPS } from 'src/modules/dashboard/consts';
|
||||||
import { appAccessList, initialUserForm } from './consts';
|
import { appAccessList, initialUserForm } from './consts';
|
||||||
import { UserModalProps } from './types';
|
import { UserModalProps } from './types';
|
||||||
|
|
||||||
|
@ -221,7 +222,7 @@ export const UserModal = ({ open, onClose, userId, setUserId }: UserModalProps)
|
||||||
<div className="flow-root mt-6">
|
<div className="flow-root mt-6">
|
||||||
<ul className="-my-5 divide-y divide-gray-200">
|
<ul className="-my-5 divide-y divide-gray-200">
|
||||||
{fields.map((item, index) => {
|
{fields.map((item, index) => {
|
||||||
if (item.name === 'dashboard') {
|
if (item.name != null && HIDDEN_APPS.indexOf(item.name) !== -1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ export const DASHBOARD_QUICK_ACCESS = [
|
||||||
];
|
];
|
||||||
|
|
||||||
/** Apps that should not be shown on the dashboard */
|
/** Apps that should not be shown on the dashboard */
|
||||||
export const HIDDEN_APPS = ['dashboard'];
|
export const HIDDEN_APPS = ['dashboard', 'velero'];
|
||||||
|
|
||||||
/** Apps that should be shown under "Utilities" */
|
/** Apps that should be shown under "Utilities" */
|
||||||
export const UTILITY_APPS = ['monitoring'];
|
export const UTILITY_APPS = ['monitoring'];
|
||||||
|
|
Loading…
Reference in a new issue