Add groups tokens doc
continuous-integration/drone/tag Build is failing
Details
continuous-integration/drone/tag Build is failing
Details
This commit is contained in:
parent
8ea832bcf3
commit
86c24a87df
50
.drone.yml
50
.drone.yml
|
@ -1,22 +1,31 @@
|
||||||
---
|
---
|
||||||
global-variables:
|
global-variables:
|
||||||
|
release: &release ${DRONE_TAG}
|
||||||
environment: &environment
|
environment: &environment
|
||||||
CRE_PORT: 9103
|
DOCS_VERSION: dev-${DRONE_BUILD_NUMBER}
|
||||||
CRE_RELEASE: ${DRONE_BRANCH##**/}
|
DOCS_REGISTRY_IMAGE: registry.fyloz.dev/colorrecipesexplorer/docs
|
||||||
|
DOCS_PORT: 9103
|
||||||
|
DOCS_RELEASE: *release
|
||||||
alpine-image: &alpine-image alpine:latest
|
alpine-image: &alpine-image alpine:latest
|
||||||
docker-registry-repo: &docker-registry-repo registry.fyloz.dev:5443/colorrecipesexplorer/docs
|
docker-registry: &docker-registry registry.fyloz.dev
|
||||||
|
docker-registry-repo: &docker-registry-repo registry.fyloz.dev/colorrecipesexplorer/docs
|
||||||
|
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
name: build
|
name: default
|
||||||
type: docker
|
type: docker
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: set-docker-tags-latest
|
- name: set-docker-tags-latest
|
||||||
image: *alpine-image
|
image: *alpine-image
|
||||||
|
environment:
|
||||||
|
<<: *environment
|
||||||
commands:
|
commands:
|
||||||
- echo -n "latest" > .tags
|
- echo -n "latest" > .tags
|
||||||
when:
|
when:
|
||||||
branch: master
|
branch: develop
|
||||||
|
event:
|
||||||
|
exclude:
|
||||||
|
- pull_request
|
||||||
|
|
||||||
- name: set-docker-tags-release
|
- name: set-docker-tags-release
|
||||||
image: *alpine-image
|
image: *alpine-image
|
||||||
|
@ -25,19 +34,26 @@ steps:
|
||||||
commands:
|
commands:
|
||||||
- echo -n "latest-release,$CRE_RELEASE" > .tags
|
- echo -n "latest-release,$CRE_RELEASE" > .tags
|
||||||
when:
|
when:
|
||||||
branch: release/**
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
- name: containerize
|
- name: containerize-release
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
|
environment:
|
||||||
|
<<: *environment
|
||||||
settings:
|
settings:
|
||||||
|
registry: *docker-registry
|
||||||
repo: *docker-registry-repo
|
repo: *docker-registry-repo
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
when:
|
when:
|
||||||
branch:
|
event:
|
||||||
- master
|
- tag
|
||||||
- release/**
|
|
||||||
|
|
||||||
- name: deploy
|
- name: deploy
|
||||||
image: *alpine-image
|
image: alpine:latest
|
||||||
environment:
|
environment:
|
||||||
<<: *environment
|
<<: *environment
|
||||||
CRE_REGISTRY_IMAGE: *docker-registry-repo
|
CRE_REGISTRY_IMAGE: *docker-registry-repo
|
||||||
|
@ -61,12 +77,8 @@ steps:
|
||||||
- ssh-keyscan -p $DEPLOY_SERVER_SSH_PORT -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
- ssh-keyscan -p $DEPLOY_SERVER_SSH_PORT -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
||||||
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
|
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
|
||||||
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker stop $DEPLOY_CONTAINER_NAME || true && docker rm $DEPLOY_CONTAINER_NAME || true"
|
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker stop $DEPLOY_CONTAINER_NAME || true && docker rm $DEPLOY_CONTAINER_NAME || true"
|
||||||
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker pull $CRE_REGISTRY_IMAGE:$CRE_RELEASE"
|
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker pull $CRE_REGISTRY_IMAGE:$DOCS_RELEASE"
|
||||||
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker run -d -p $CRE_PORT:80 --name=$DEPLOY_CONTAINER_NAME $CRE_REGISTRY_IMAGE:$CRE_RELEASE"
|
- ssh -p $DEPLOY_SERVER_SSH_PORT $DEPLOY_SERVER_USERNAME@$DEPLOY_SERVER "docker run -d -p $DOCS_PORT:80 --name=$DEPLOY_CONTAINER_NAME $DOCS_REGISTRY_IMAGE:$DOCS_RELEASE"
|
||||||
when:
|
when:
|
||||||
branch: release/**
|
event:
|
||||||
|
- tag
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- release/**
|
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/intellij
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
# *.iml
|
||||||
|
# modules.xml
|
||||||
|
# .idea/misc.xml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# Sonarlint plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||||
|
.idea/**/sonarlint/
|
||||||
|
|
||||||
|
# SonarQube Plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||||
|
.idea/**/sonarIssues.xml
|
||||||
|
|
||||||
|
# Markdown Navigator plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||||
|
.idea/**/markdown-navigator.xml
|
||||||
|
.idea/**/markdown-navigator-enh.xml
|
||||||
|
.idea/**/markdown-navigator/
|
||||||
|
|
||||||
|
# Cache file creation bug
|
||||||
|
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||||
|
.idea/$CACHE_FILE$
|
||||||
|
|
||||||
|
# CodeStream plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||||
|
.idea/codestream.xml
|
||||||
|
|
||||||
|
# Azure Toolkit for IntelliJ plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||||
|
.idea/**/azureSettings.xml
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/intellij
|
||||||
|
|
||||||
|
# Mkdocs output
|
||||||
|
site/
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/documentation.iml" filepath="$PROJECT_DIR$/.idea/documentation.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,91 @@
|
||||||
|
# Groupes par défaut
|
||||||
|
|
||||||
|
Color Recipes Explorer permet de définir un groupe d'utilisateur par défaut dans un navigateur. Cette fonctionnalité
|
||||||
|
permet aux utilisateurs utilisant ce navigateur d'être automatiquement connectés au système lors du chargement de l'
|
||||||
|
application. Après la connexion, ces utilisateurs auront les mêmes permissions que le groupe par défaut.
|
||||||
|
|
||||||
|
Lorsqu’aucun utilisateur n'est connecté, le navigateur tentera de se connecter au groupe par défaut au chargement de
|
||||||
|
l'application. Si le navigateur a un jeton de connexion associé et que celui-ci est valide, l'utilisateur du navigateur
|
||||||
|
sera connecté en tant que le groupe par défaut. Si ces deux critères ne sont pas respectés, la tentative de connexion
|
||||||
|
échouera.
|
||||||
|
|
||||||
|
## Définir un groupe par défaut
|
||||||
|
|
||||||
|
Il est possible de définir le groupe par défaut du navigateur dans la liste des groupes (Administration > Groupes). Pour
|
||||||
|
ce faire, il suffit d'appuyer sur le bouton «Définir par défaut» du groupe désiré et d'entrer un nom unique au
|
||||||
|
navigateur dans la boite de dialogue qui s'affiche. En appuyant sur le bouton «Continuer», le nom est validé, puis un
|
||||||
|
jeton de connexion unique est assigné au navigateur.
|
||||||
|
|
||||||
|
### Critères de validation
|
||||||
|
|
||||||
|
Pour être valide, le nom du navigateur doit être unique.
|
||||||
|
|
||||||
|
## Gestion des jetons de connexion
|
||||||
|
|
||||||
|
### Connaître le groupe par défaut d'un navigateur
|
||||||
|
|
||||||
|
Après la connexion automatique au groupe, le nom du navigateur et le nom du groupe par défaut s'afficheront à la gauche
|
||||||
|
du logo de l'application, en haut à droite.
|
||||||
|
|
||||||
|
Si l'utilisateur s'est connecté manuellement au système (et non pas à un groupe par défaut), il est seulement possible
|
||||||
|
de
|
||||||
|
le savoir si cet utilisateur est un administrateur.
|
||||||
|
Pour ce faire, le groupe par défaut sera affiché dans la liste des groupes d'utilisateurs (Administration > Groupes).
|
||||||
|
Si un jeton de connexion est présent dans le navigateur, le bouton "Définir par défaut" ne sera pas présent et le
|
||||||
|
texte "Groupe par défaut" sera affiché à sa place dans la ligne du groupe par défaut du navigateur.
|
||||||
|
|
||||||
|
### Voir tous les jetons de connexion
|
||||||
|
|
||||||
|
Tous les jetons de connexion enregistrés dans le système sont listés dans une table à: Administration > Ordinateurs.
|
||||||
|
Seuls les administrateurs peuvent accéder à cette page.
|
||||||
|
|
||||||
|
Chaque ligne de la table représente un seul jeton et ces informations sont listées:
|
||||||
|
|
||||||
|
* Identifiant: L'UUID (Universal Unique Identifier) du jeton. C'est la seule information stockée dans les navigateurs.
|
||||||
|
* Nom: Le nom unique du jeton.
|
||||||
|
* Groupe: Le nom du groupe auquel les utilisateurs utilisant ce jeton seront connectés.
|
||||||
|
* État: Si le jeton est activé ou désactivé.
|
||||||
|
|
||||||
|
De plus, il est possible de désactiver (ou d'activer) ou de supprimer chaque jeton.
|
||||||
|
Désactiver un jeton permet d'empêcher la connexion temporairement jusqu'à sa réactivation, tandis que la suppression
|
||||||
|
l'empêche définitivement.
|
||||||
|
|
||||||
|
### Suppression d'un jeton de connexion
|
||||||
|
|
||||||
|
Supprimer un jeton de connexion permet d'empêcher toutes les connexions l'utilisant définitivement. Les jetons supprimés
|
||||||
|
ne sont pas affichés dans la liste des jetons.
|
||||||
|
|
||||||
|
Dans la liste des jetons de connexion (Administration > Ordinateurs), appuyer sur le bouton «Supprimer» de la ligne du
|
||||||
|
jeton à supprimer.
|
||||||
|
Une boite de confirmation s'affichera. Après confirmation, le jeton sera supprimé* du système et ne sera plus utilisable
|
||||||
|
immédiatement.
|
||||||
|
|
||||||
|
### Désactivation d'un jeton de connexion
|
||||||
|
|
||||||
|
Désactiver un jeton de connexion permet d'empêcher toutes les connexions l'utilisant temporairement. Les jetons
|
||||||
|
désactivés sont affichés dans la liste des jetons.
|
||||||
|
|
||||||
|
Dans la liste des jetons de connexion (Administration > Ordinateurs), appuyer sur le bouton «Désactiver» de la ligne du
|
||||||
|
jeton à désactiver. Le jeton sera immédiatement désactivé et ne sera plus utilisable.
|
||||||
|
|
||||||
|
\* Le jeton sera toujours stocké dans la base de données, mais sera marqué comme étant supprimé. Cela permet d'assurer
|
||||||
|
qu'aucun
|
||||||
|
futur jeton ne soit créé en utilisant un identifiant supprimé, ce qui serait une faille de sécurité. Ces jetons ne sont
|
||||||
|
pas accessibles depuis l'interface utilisateur.
|
||||||
|
|
||||||
|
### Assignation d'un jeton de connexion
|
||||||
|
|
||||||
|
Par souci de sécurité, les jetons de connexion peuvent seulement être assignés lors de leur création.
|
||||||
|
Les jetons existants peuvent seulement être désactivés ou supprimés.
|
||||||
|
Ainsi, si un des jetons est compromis, il suffit de le supprimer pour empêcher toutes les connexions avec celui-ci,
|
||||||
|
et seulement un des navigateurs peut être impacté.
|
||||||
|
|
||||||
|
## Stockage et format des jetons de connexion
|
||||||
|
|
||||||
|
Les jetons de connexion utilisent le format [JWT](https://jwt.io/) signé (JWS). Ce format permet de garantir l'intégrité
|
||||||
|
du jeton,
|
||||||
|
c'est-à-dire que l'utilisation d'un jeton créé ou modifié par un tiers parti provoquera l'échec de la connexion.
|
||||||
|
|
||||||
|
Ces jetons sont stockés dans les cookies du navigateur, sous le nom ```Group-Token```. Ainsi, ils ne seront pas
|
||||||
|
supprimés à la fermeture du
|
||||||
|
navigateur ou de l'ordinateur.
|
Loading…
Reference in New Issue