added avatars on api

root 2021-05-23 01:12:07 +02:00
parent 790afd2a9c
commit 7a0176a6e3
10 changed files with 409 additions and 62 deletions

View File

@ -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

View File

@ -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

View File

@ -59,7 +59,7 @@ def send_templates(path):
Import all views
'''
from .views import MenuViews
from .views import AvatarsViews

View File

@ -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)

View File

@ -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>

View File

@ -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"}}

View File

@ -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>

View File

@ -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')

View File

@ -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)

View File

@ -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