Commit 877f32ec authored by Matthieu BONNOT's avatar Matthieu BONNOT
Browse files

Séparation README et CONTRIBUTING / Refacto de code pour la notion de collaborateur

parent e2dc4efd
Pipeline #56556 failed with stages
in 3 minutes and 55 seconds
# Contribuer au Livret d'accueil.
## Mise à jour
Pour mettre à jour l'application, Git est nécessaire.
### Installation
L'installation de Git se fait par la ligne de commande
#### Windows
Pour pouvoir utiliser ce genre de commandes sous Windows, il existe plusieurs utilitaires pour simuler un environnement Linux, le plus pratique et le plus portable est WSL, disponible en version 2 gratuitement sur le Microsoft Store.
Une fois l'installation terminé il vous suffira de rentrer cette commande :
```
apt install git
```
#### Linux
L'installation la plus facile est celle depuis Linux, en effet il suffit d'utiliser le gestionnaire de paquets natif *apt*.
```
apt install git
```
#### MacOS
Avant d'installer Git, il est préférable d'installer Homebrew sur macOs qui est un gestionnaire de paquet pas installé nativement sur ce système.
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
### Récupération du dépôt
Pour récupérer le dépôt, rentrez la commande suivante dans votre Terminal :
```
git clone https://gitlab.ippon.fr/jarakarama/livretaccueil.git
```
### Configuration
Si vous venez d'installer Git, vous devrez alors configurer vos credentials, pour cela suivez les commandes suivantes :
```
git config user.email <USERNAME>@ippon.fr
git config user.name "Prénom Nom"
```
### Ajouter des fichiers
La première étape est de se placer dans le répertoire du projet depuis le terminal. Pour cela, il faudra utiliser la commande **cd**. Dans mon cas, voici la commande que je dois réaliser si j'ai réaliser la commande **git clone** dès l'ouverture de mon terminal :
```
cd livretaccueil
```
#### Via la CLI
Tout d'abord vérifier que vous êtes bien sur la bonne branche via la commande suivante :
```
git branch
```
Pour réaliser une mise à jour, vous devriez normalement être sur la branche **master**, sinon, placez vous sur cette dernière :
```
git checkout master
```
Une fois placé sur la bonne branche, rajouter / remplacer des fichiers via votre explorateur de fichiers. Une fois terminé, suivez les commandes suivantes :
```
git add -A
git commit -m "Mise à jour des fichiers concernant l'agence de Paris"
git push
```
N'hésitez pas à modifier le message suivant le **-m**, ce n'est qu'un exemple ici.
#### Via une interface graphique
Pour l'interface graphique, un bon utilitaire accessible pour tout type de besoins peut être Visual Studio Code qui est un IDE gratuit multi-plateforme. Les changements que vous aurez réalisés seront disponibles dans l'onglet **Source Control** sur la gauche. Par exemple dans mon interface, seul le fichier *README.md* a été modifié :
<p align="center">
<img src="img/source-control.png" alt="source control" width="200"/>
</p>
Rentrez alors simplement le message de votre modification :
<p align="center">
<img src="img/commit.png" alt="commit" width="200"/>
</p>
Vous pouvez ensuite appuyer sur ✓ pour valider votre modification.
Si le message suivant apparaît : *Would you like to stage all your changes and commit them directly?* c'est que certaines de vos modifications n'ont pas été rajoutés. Pour cela, n'hésitez pas à cliquer sur *Stage All Changes* representé par un logo **➕** si vous voulez tout rajouter ou alors que sur les fichiers qui vous intéressent.
Il ne reste plus qu'à "pousser" vos modifications, pour cela :
<p align="center">
<img src="img/push.png" alt="push" width="200"/>
</p>
## Utilisation
Pour pouvoir builder l'application :
```
./mvnw clean install
```
Il suffira alors par la suite de lancer la commande suivante pour lancer le serveur en local :
```
./mvnw spring-boot:run
```
## Déploiement
Le déploiement se fait via des pipelines de CI / CD, a chaque push sur master, une pipeline se déclenche, elle est composée de 3 stages :
* build : compile et cré l'exécutable sous format .jar
* package : cré l'image docker et le push sur artifactory
* deploy : déploie l'application sur l'URL [https://livret-accueil.iaas.ippon.fr/](https://livret-accueil.iaas.ippon.fr/). Attention cette étape doit être déclenché **manuellement** dans l'onglet [Pipelines](https://gitlab.ippon.fr/jarakarama/livretaccueil/-/pipelines) :
![deploy](img/deploy.png)
# Livret d'accueil
## Mise à jour
Pour mettre à jour l'application, Git est nécessaire.
## Description
### Installation
L'installation de Git se fait par la ligne de commande
Le livret d'accueil est à destination des nouveaux arrivants pour leur permettre de réaliser une meilleur intégration.
En effet, par le biais de plusieurs modules d'e-learning, le nouveau collaborateur peut découvrir son nouvel environnement de travail et les
différentes démarches administratives à réaliser lors de son arrivée.
#### Windows
Pour pouvoir utiliser ce genre de commandes sous Windows, il existe plusieurs utilitaires pour simuler un environnement Linux, le plus pratique et le plus portable est WSL, disponible en version 2 gratuitement sur le Microsoft Store.
## Stack du projet
Une fois l'installation terminé il vous suffira de rentrer cette commande :
* Un back en Java, SpringBoot.
* L'authentification interne d'ippon via [KeyCloak](https://www.keycloak.org/)
* L'outil de templating : [Thymeleaf](https://www.thymeleaf.org/) pour la génération de certaines pages web.
* Un site statique généré directement par le PO via l'outil de création de tutorial : [Articulate](https://articulate.com/)
```
apt install git
```
Pour contribuer suivez la documentation [ici](./CONTRIBUTING.md)
#### Linux
L'installation la plus facile est celle depuis Linux, en effet il suffit d'utiliser le gestionnaire de paquets natif *apt*.
```
apt install git
```
## Partie prenantes
#### MacOS
Avant d'installer Git, il est préférable d'installer Homebrew sur macOs qui est un gestionnaire de paquet pas installé nativement sur ce système.
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
### Chef de projet :
* Thibault ANDRIEUX
### Product Owner :
### Récupération du dépôt
Pour récupérer le dépôt, rentrez la commande suivante dans votre Terminal :
* David LAROSE
```
git clone https://gitlab.ippon.fr/jarakarama/livretaccueil.git
```
### Developpeurs :
### Configuration
Si vous venez d'installer Git, vous devrez alors configurer vos credentials, pour cela suivez les commandes suivantes :
* Jasmine ARAKARAMA
* Anthony FREYERMUTH
* Matthieu BONNOT
```
git config user.email <USERNAME>@ippon.fr
git config user.name "Prénom Nom"
```
### Ajouter des fichiers
La première étape est de se placer dans le répertoire du projet depuis le terminal. Pour cela, il faudra utiliser la commande **cd**. Dans mon cas, voici la commande que je dois réaliser si j'ai réaliser la commande **git clone** dès l'ouverture de mon terminal :
```
cd livretaccueil
```
#### Via la CLI
Tout d'abord vérifier que vous êtes bien sur la bonne branche via la commande suivante :
```
git branch
```
Pour réaliser une mise à jour, vous devriez normalement être sur la branche **master**, sinon, placez vous sur cette dernière :
```
git checkout master
```
Une fois placé sur la bonne branche, rajouter / remplacer des fichiers via votre explorateur de fichiers. Une fois terminé, suivez les commandes suivantes :
```
git add -A
git commit -m "Mise à jour des fichiers concernant l'agence de Paris"
git push
```
N'hésitez pas à modifier le message suivant le **-m**, ce n'est qu'un exemple ici.
#### Via une interface graphique
Pour l'interface graphique, un bon utilitaire accessible pour tout type de besoins peut être Visual Studio Code qui est un IDE gratuit multi-plateforme. Les changements que vous aurez réalisés seront disponibles dans l'onglet **Source Control** sur la gauche. Par exemple dans mon interface, seul le fichier *README.md* a été modifié :
<p align="center">
<img src="img/source-control.png" alt="source control" width="200"/>
</p>
Rentrez alors simplement le message de votre modification :
<p align="center">
<img src="img/commit.png" alt="commit" width="200"/>
</p>
Vous pouvez ensuite appuyer sur ✓ pour valider votre modification.
Si le message suivant apparaît : *Would you like to stage all your changes and commit them directly?* c'est que certaines de vos modifications n'ont pas été rajoutés. Pour cela, n'hésitez pas à cliquer sur *Stage All Changes* representé par un logo **➕** si vous voulez tout rajouter ou alors que sur les fichiers qui vous intéressent.
Il ne reste plus qu'à "pousser" vos modifications, pour cela :
<p align="center">
<img src="img/push.png" alt="push" width="200"/>
</p>
## Utilisation
Pour pouvoir builder l'application :
```
./mvnw clean install
```
Il suffira alors par la suite de lancer la commande suivante pour lancer le serveur en local :
```
./mvnw spring-boot:run
```
## Déploiement
Le déploiement se fait via des pipelines de CI / CD, a chaque push sur master, une pipeline se déclenche, elle est composée de 3 stages :
* build : compile et cré l'exécutable sous format .jar
* package : cré l'image docker et le push sur artifactory
* deploy : déploie l'application sur l'URL [https://livret-accueil.iaas.ippon.fr/](https://livret-accueil.iaas.ippon.fr/). Attention cette étape doit être déclenché **manuellement** dans l'onglet [Pipelines](https://gitlab.ippon.fr/jarakarama/livretaccueil/-/pipelines) :
![deploy](img/deploy.png)
package com.ippon.livretAccueil.model;
import java.util.List;
public class Equipe {
public Ressource manager;
public List<Ressource> listeEquipe;
public List<Ressource> getListeEquipe() {
return listeEquipe;
}
public void setListeEquipe(List<Ressource> listeEquipe) {
this.listeEquipe = listeEquipe;
}
public Ressource getManager() {
return manager;
}
public void setManager(Ressource manager) {
this.manager = manager;
}
}
package com.ippon.livretAccueil.repo;
import java.util.List;
import java.util.Optional;
import com.ippon.livretAccueil.model.Ressource;
public interface RessourceReadOnlyRepo extends ReadOnlyRepository<Ressource, Long> {
Ressource findById(Long id);
List<Ressource> findByResmres(Long id);
Ressource findByLogin(String login);
}
package com.ippon.livretAccueil;
package com.ippon.livretaccueil;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
......
package com.ippon.livretAccueil;
package com.ippon.livretaccueil.config;
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
......
package com.ippon.livretAccueil.controller;
package com.ippon.livretaccueil.controller;
import org.springframework.stereotype.Controller;
......@@ -15,7 +15,7 @@ import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.keycloak.representations.IDToken;
@Controller
public class WebController {
public class ControllerPageAccueil {
// Injectez (inject) via application.properties.
@Value("${welcome.message}")
......
package com.ippon.livretAccueil.controller;
package com.ippon.livretaccueil.controller;
import java.security.Principal;
import java.util.Map;
......@@ -8,22 +8,18 @@ import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.keycloak.representations.IDToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ippon.livretAccueil.model.Equipe;
import com.ippon.livretAccueil.model.Ressource;
import com.ippon.livretAccueil.model.UserData;
import com.ippon.livretAccueil.repo.RessourceReadOnlyRepo;
import com.nimbusds.oauth2.sdk.token.AccessToken;
import com.ippon.livretaccueil.model.staff.Equipe;
import com.ippon.livretaccueil.model.staff.Collaborateur;
import com.ippon.livretaccueil.model.UtilisateurLivret;
import com.ippon.livretaccueil.dao.RessourceReadOnlyRepo;
@Controller
public class CustomUserAttrController {
public class ControllerPageMonEquipe {
@Autowired
private RessourceReadOnlyRepo ressDao;
......@@ -36,7 +32,7 @@ public class CustomUserAttrController {
final Principal principal = (Principal) authentication.getPrincipal();
UserData user = new UserData();
UtilisateurLivret user = new UtilisateurLivret();
user.setUserName(principal.getName());
if (principal instanceof KeycloakPrincipal) {
......@@ -59,12 +55,12 @@ public class CustomUserAttrController {
public void ressource(Model model, String login) {
Ressource ressource = ressDao.findByLogin(login);
Ressource ressourceManager = ressDao.findById(Long.valueOf(ressource.getResmres()));
Collaborateur ressource = ressDao.findByLogin(login);
Collaborateur ressourceManager = ressDao.findById(Long.valueOf(ressource.getResmres()));
Equipe equipe = new Equipe();
equipe.manager = ressourceManager;
equipe.listeEquipe = ressDao.findByResmres(ressourceManager.getOid());
equipe.managerEquipe = ressourceManager;
equipe.collaborateursEquipe = ressDao.findByResmres(ressourceManager.getOid());
model.addAttribute("equipeOrganigramme", equipe);
......
package com.ippon.livretAccueil.repo;
package com.ippon.livretaccueil.dao;
import java.util.List;
import java.util.Optional;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.Repository;
......
package com.ippon.livretaccueil.dao;
import java.util.List;
import com.ippon.livretaccueil.model.staff.Collaborateur;
public interface RessourceReadOnlyRepo extends ReadOnlyRepository<Collaborateur, Long> {
Collaborateur findById(Long id);
List<Collaborateur> findByResmres(Long id);
Collaborateur findByLogin(String login);
}
package com.ippon.livretAccueil.model;
package com.ippon.livretaccueil.model;
import java.util.HashMap;
import java.util.Map;
public class UserData {
public class UtilisateurLivret {
String id;
String userName;
......
package com.ippon.livretAccueil.model;
package com.ippon.livretaccueil.model.staff;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
......@@ -8,7 +8,7 @@ import javax.persistence.Table;
@Entity
@Table(name = "rsource", schema="asa")
public class Ressource {
public class Collaborateur {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
......
package com.ippon.livretaccueil.model.staff;
import java.util.List;
public class Equipe {
public Collaborateur managerEquipe;
public List<Collaborateur> collaborateursEquipe;
public List<Collaborateur> getCollaborateursEquipe() {
return collaborateursEquipe;
}
public void setCollaborateursEquipe(List<Collaborateur> collaborateursEquipe) {
this.collaborateursEquipe = collaborateursEquipe;
}
public Collaborateur getManagerEquipe() {
return managerEquipe;
}
public void setManagerEquipe(Collaborateur managerEquipe) {
this.managerEquipe = managerEquipe;
}
}
......@@ -14,9 +14,9 @@ keycloak.realm=camel-real
keycloak.resource=meltingpoc
keycloak.principal-attribute=preferred_username
welcome.message = Welcome
error.message = Error Loading
welcome.message=Welcome
error.message=Error Loading
keycloak.credentials.secret = e0500553-7334-432d-bac5-99e317c54244
keycloak.credentials.secret=e0500553-7334-432d-bac5-99e317c54244
server.error.whitelabel.enabled=false
package com.ippon.livretAccueil;
package com.ippon.livretaccueil;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment