added avatars on api
parent
790afd2a9c
commit
7a0176a6e3
|
@ -11,14 +11,16 @@ services:
|
|||
container_name: isard-sso-api
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- ${CUSTOM_PATH}/custom/menu/custom.yaml:/api/src/custom.yaml
|
||||
- ${CUSTOM_PATH}/custom/menu/system.yaml:/api/src/system.yaml
|
||||
#- ${BUILD_ROOT_PATH}/docker/api/src:/api:rw ## Develop
|
||||
- ${CUSTOM_PATH}/custom/menu/custom.yaml:/api/custom.yaml
|
||||
- ${CUSTOM_PATH}/custom/menu/system.yaml:/api/system.yaml
|
||||
- ${CUSTOM_PATH}/custom/img:/api/api/static/img
|
||||
- ${DATA_FOLDER}/avatars/:/api/avatars:ro
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- isard_net
|
||||
# ports:
|
||||
# - published: 80
|
||||
ports:
|
||||
# - published: 7039
|
||||
# target: 7039
|
||||
env_file:
|
||||
- .env
|
|
@ -13,3 +13,4 @@ six==1.15.0
|
|||
Werkzeug==1.0.1
|
||||
zope.event==4.4
|
||||
zope.interface==5.1.0
|
||||
python-keycloak==0.24.0
|
||||
|
|
|
@ -59,7 +59,7 @@ def send_templates(path):
|
|||
Import all views
|
||||
'''
|
||||
from .views import MenuViews
|
||||
|
||||
from .views import AvatarsViews
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env python
|
||||
# coding=utf-8
|
||||
import time
|
||||
from api import app as application
|
||||
from datetime import datetime, timedelta
|
||||
import pprint
|
||||
|
||||
import logging
|
||||
import traceback
|
||||
import yaml, json
|
||||
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
from keycloak import KeycloakAdmin
|
||||
|
||||
|
||||
|
||||
class Avatars():
|
||||
def __init__(self):
|
||||
self.keycloak_admin = KeycloakAdmin(server_url="http://isard-sso-keycloak:8080/auth/",
|
||||
username='admin',
|
||||
password='keycloakkeycloak',
|
||||
realm_name="master",
|
||||
verify=True)
|
||||
|
||||
def get_user_avatar(self,username):
|
||||
return self.keycloak_admin.get_user_id(username)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# # Add user
|
||||
# new_user = keycloak_admin.create_user({"email": "example@example.com",
|
||||
# "username": "example@example.com",
|
||||
# "enabled": True,
|
||||
# "firstName": "Example",
|
||||
# "lastName": "Example"})
|
||||
# print(new_user)
|
|
@ -0,0 +1,171 @@
|
|||
|
||||
<div id="navbar-menu-apps">
|
||||
<div id="menu-apps-btn">
|
||||
<button type="button" id="dropdownMenuAppsButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<svg id="Menú_Apps" data-name="Menú Apps" xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26">
|
||||
<rect id="Rectángulo_2" data-name="Rectángulo 2" width="6" height="6" fill="#262626"/>
|
||||
<rect id="Rectángulo_1447" data-name="Rectángulo 1447" width="6" height="6" transform="translate(0 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1450" data-name="Rectángulo 1450" width="6" height="6" transform="translate(0 20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1440" data-name="Rectángulo 1440" width="6" height="6" transform="translate(10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1446" data-name="Rectángulo 1446" width="6" height="6" transform="translate(10 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1449" data-name="Rectángulo 1449" width="6" height="6" transform="translate(10 20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1441" data-name="Rectángulo 1441" width="6" height="6" transform="translate(20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1445" data-name="Rectángulo 1445" width="6" height="6" transform="translate(20 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1448" data-name="Rectángulo 1448" width="6" height="6" transform="translate(20 20)" fill="#262626"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div id="dropdownMenuApps" class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton" >
|
||||
<ul id="app-aapps">
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-cloud" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Núvol + crear arxius</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/mail/setup" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-envelope-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Correu</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://pad.santantoni.duckdns.org/" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-file-text-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Pads</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/forms" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-check-square-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Formularis</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/polls" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-bar-chart" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Enquestes</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/spreed" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-commenting-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Xat</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/calendar" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Calendari</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://wp.santantoni.duckdns.org/wp-login.php?saml_sso" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-rss" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Webs</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/bbb" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-video-camera" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Reunions BBB</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/photos" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-file-image-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Fotos</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul id="app-external" class="external-links">
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://myweb" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-university" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Escola Web</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://myvideos" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-youtube-play" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Youtube</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://mydictionary" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-book" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Diccionari</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="http://meet.jit.si" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-video-camera" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Reunions Jitsi</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://www.duckduckgo.com" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-search" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Cercar</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://www.openstreetmap.org" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-map-marker" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Maps</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
{"background_login": "https://api.santantoni.duckdns.org/img/background.png", "colours": {"background": "#F0F0F0", "primary": "#92AE01", "secondary": "#FFFFFF"}, "logo": "https://api.santantoni.duckdns.org/img/logo.png", "apps_external": [{"href": "https://myweb", "icon": "fa fa-university", "name": "Escola Web", "shortname": "web"}, {"href": "https://myvideos", "icon": "fa fa-youtube-play", "name": "Youtube", "shortname": "youtube"}, {"href": "https://mydictionary", "icon": "fa fa-book", "name": "Diccionari", "shortname": "diccionari"}, {"href": "http://meet.jit.si", "icon": "fa fa-video-camera", "name": "Reunions Jitsi", "shortname": "jitsi"}, {"href": "https://www.duckduckgo.com", "icon": "fa fa-search", "name": "Cercar", "shortname": "search"}, {"href": "https://www.openstreetmap.org", "icon": "fa fa-map-marker", "name": "Maps", "shortname": "maps"}], "apps_internal": [{"href": "https://nextcloud.santantoni.duckdns.org/", "icon": "fa fa-cloud", "name": "N\u00favol + crear arxius", "shortname": "cloud"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/mail/setup", "icon": "fa fa-envelope-o", "name": "Correu", "shortname": "email"}, {"href": "https://pad.santantoni.duckdns.org/", "icon": "fa fa-file-text-o", "name": "Pads", "shortname": "pads"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/forms", "icon": "fa fa-check-square-o", "name": "Formularis", "shortname": "forms"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/polls", "icon": "fa fa-bar-chart", "name": "Enquestes", "shortname": "feedback"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/spreed", "icon": "fa fa-commenting-o", "name": "Xat", "shortname": "chat"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/calendar", "icon": "fa fa-calendar", "name": "Calendari", "shortname": "schedule"}, {"href": "https://wp.santantoni.duckdns.org/wp-login.php?saml_sso", "icon": "fa fa-rss", "name": "Webs", "shortname": "webs"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/bbb", "icon": "fa fa-video-camera", "name": "Reunions BBB", "shortname": "meets_bbb"}, {"href": "https://nextcloud.santantoni.duckdns.org/apps/photos", "icon": "fa fa-file-image-o", "name": "Fotos", "shortname": "photos"}], "user": {"account": "https://sso.santantoni.duckdns.org/auth/realms/master/account", "avatar": "https://sso.santantoni.duckdns.org/auth/realms/master/avatar-provider", "password": "https://sso.santantoni.duckdns.org/auth/realms/master/password"}}
|
|
@ -0,0 +1,171 @@
|
|||
|
||||
<div id="navbar-menu-apps">
|
||||
<div id="menu-apps-btn">
|
||||
<button type="button" id="dropdownMenuAppsButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<svg id="Menú_Apps" data-name="Menú Apps" xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26">
|
||||
<rect id="Rectángulo_2" data-name="Rectángulo 2" width="6" height="6" fill="#262626"/>
|
||||
<rect id="Rectángulo_1447" data-name="Rectángulo 1447" width="6" height="6" transform="translate(0 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1450" data-name="Rectángulo 1450" width="6" height="6" transform="translate(0 20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1440" data-name="Rectángulo 1440" width="6" height="6" transform="translate(10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1446" data-name="Rectángulo 1446" width="6" height="6" transform="translate(10 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1449" data-name="Rectángulo 1449" width="6" height="6" transform="translate(10 20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1441" data-name="Rectángulo 1441" width="6" height="6" transform="translate(20)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1445" data-name="Rectángulo 1445" width="6" height="6" transform="translate(20 10)" fill="#262626"/>
|
||||
<rect id="Rectángulo_1448" data-name="Rectángulo 1448" width="6" height="6" transform="translate(20 20)" fill="#262626"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div id="dropdownMenuApps" class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton" >
|
||||
<ul id="app-aapps">
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-cloud" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Núvol + crear arxius</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/mail/setup" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-envelope-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Correu</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://pad.santantoni.duckdns.org/" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-file-text-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Pads</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/forms" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-check-square-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Formularis</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/polls" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-bar-chart" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Enquestes</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/spreed" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-commenting-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Xat</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/calendar" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Calendari</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://wp.santantoni.duckdns.org/wp-login.php?saml_sso" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-rss" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Webs</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/bbb" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-video-camera" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Reunions BBB</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://nextcloud.santantoni.duckdns.org/apps/photos" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-file-image-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Fotos</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul id="app-external" class="external-links">
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://myweb" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-university" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Escola Web</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://myvideos" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-youtube-play" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Youtube</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://mydictionary" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-book" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Diccionari</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="http://meet.jit.si" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-video-camera" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Reunions Jitsi</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://www.duckduckgo.com" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-search" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Cercar</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="app ">
|
||||
<a href="https://www.openstreetmap.org" class="app-link" target="_blank">
|
||||
<div class="icon ">
|
||||
<i class="fa fa-map-marker" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="text">Maps</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,19 @@
|
|||
#!flask/bin/python
|
||||
# coding=utf-8
|
||||
from api import app
|
||||
import logging as log
|
||||
import traceback
|
||||
|
||||
from uuid import uuid4
|
||||
import time,json
|
||||
import sys,os
|
||||
from flask import render_template, Response, request, redirect, url_for, jsonify, send_from_directory
|
||||
|
||||
from ..lib.avatars import Avatars
|
||||
avatars = Avatars()
|
||||
|
||||
@app.route("/avatar/<username>", methods=["GET"])
|
||||
def avatar(username):
|
||||
print(app.root_path)
|
||||
log.error(app.root_path)
|
||||
return send_from_directory(os.path.join(app.root_path, '../avatars/master-avatars/'), avatars.get_user_avatar(username), mimetype='image/jpg')
|
|
@ -7,7 +7,5 @@ import yaml
|
|||
|
||||
from api import app
|
||||
|
||||
# import pprint
|
||||
# pprint.pprint(app.yaml)
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=7039, debug=False) #, logger=logger, engineio_logger=engineio_logger)
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
apps_internal:
|
||||
- subdomain: nextcloud
|
||||
href: /
|
||||
icon: fa fa-cloud
|
||||
name: Núvol + crear arxius
|
||||
shortname: cloud
|
||||
- subdomain: nextcloud
|
||||
href: /apps/mail/setup
|
||||
icon: fa fa-envelope-o
|
||||
name: Correu
|
||||
shortname: email
|
||||
- subdomain: pad
|
||||
href: /
|
||||
icon: fa fa-file-text-o
|
||||
name: Pads
|
||||
shortname: pads
|
||||
- subdomain: nextcloud
|
||||
href: /apps/forms
|
||||
icon: fa fa-check-square-o
|
||||
name: Formularis
|
||||
shortname: forms
|
||||
- subdomain: nextcloud
|
||||
href: /apps/polls
|
||||
icon: fa fa-bar-chart
|
||||
name: Enquestes
|
||||
shortname: feedback
|
||||
- subdomain: nextcloud
|
||||
href: /apps/spreed
|
||||
icon: fa fa-commenting-o
|
||||
name: Xat
|
||||
shortname: chat
|
||||
- subdomain: nextcloud
|
||||
href: /apps/calendar
|
||||
icon: fa fa-calendar
|
||||
name: Calendari
|
||||
shortname: schedule
|
||||
- subdomain: wp
|
||||
href: /wp-login.php?saml_sso
|
||||
icon: fa fa-rss
|
||||
name: Webs
|
||||
shortname: webs
|
||||
- subdomain: nextcloud
|
||||
href: /apps/bbb
|
||||
icon: fa fa-video-camera
|
||||
name: Reunions BBB
|
||||
shortname: meets_bbb
|
||||
- subdomain: nextcloud
|
||||
href: /apps/photos
|
||||
icon: fa fa-file-image-o
|
||||
name: Fotos
|
||||
shortname: photos
|
||||
user:
|
||||
account: /auth/realms/master/account
|
||||
avatar: /auth/realms/master/avatar-provider
|
||||
password: /auth/realms/master/password
|
Loading…
Reference in New Issue