Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ungdev/integration-utt

Site de l'intégration du BDE de l'UTT.
https://github.com/ungdev/integration-utt

Last synced: 15 days ago
JSON representation

Site de l'intégration du BDE de l'UTT.

Awesome Lists containing this project

README

        

# Intégration

Site réalisé pour le [BDE de l'UTT](http://bde.utt.fr), sous Laravel 5.2. Le but est de pouvoir importer, gérer les nouveaux étudiants, les assigner à une équipe, ...

## Getting started

Pour développer le site d'inté, vous aurez besoin d'avoir les logiciels suivant installé sur votre ordinateur

* git
* PHP 7.1+ (Avec les extensions: gd, mysql)
* Composer
* MariaDB (les migrations contiennent des instructions spécifiques à MySQL / MariaDB)

Exemple d'installation de dépendance pour Ubuntu 20.04, ajustez cette commande pour votre système :

```
sudo apt install git php7.4 php7.4-gd php7.4-mysql composer mariadb-server mariadb-client
```

Commencez par cloner le repo git où vous le souhaitez

```
[email protected]:ungdev/integration-UTT.git
```

Entrez ensuite dans ce dossier et installez toutes les dépendances composer:

```
cd integration-UTT
composer install
```

### Configuration et initialisation de la base de donnée

Une fois les dépendances installées, nous pouvons configurer la base de donnée. Coté MariaDB, il suffit de créer la base de donnée vide et un utilisateur associé:

```
sudo mysql
create database integration;
CREATE USER 'integration'@'localhost' IDENTIFIED BY 'TheDbPassword';
GRANT ALL PRIVILEGES ON integration.* TO 'integration'@'localhost';
FLUSH PRIVILEGES;
```

Il faut ensuite indiquer à laravel comment se connecter à la base de donnée. Pour cela, on crée le fichier de config `.env`.

```
cp .env.example .env
```

Puis dans le `.env` modifiez les éléments suivants

```
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=integration
DB_USERNAME=integration
DB_PASSWORD=TheDbPassword
```

Maintenant que la base de donnée est configuré, nous pouvons lancer les migrations. Cela permettra de créer la structure de la base de donnée.

```
php artisan migrate
```

### Génération des clés de chiffrement

Juste avant de pouvoir lancer le site, vous devez lancer les commandes suivantes

```
php artisan key:generate
php artisan passport:install
```

### Lancement du site

```
php artisan serve
```

Vous devriez maintenant pouvoir accéder au site depuis http://127.0.0.1:8000. Vous ne pouvez par contre pas encore vous connecter..

### Configuration de la connexion via EtuUTT

L'une des façons de vous connecter au site, est de le relier à EtuUTT. Pour cela, rendez vous sur [la section developpeur d'EtuUTT](https://etu.utt.fr/api/panel) et créez une application

Concernant l'URL de redirection, mettez `http://localhost/oauth/callback`. Si nécéssaire remplacez `localhost` avec le nom de domaine ou l'ip et le port sur lequel vous accédez à votre version de développement du site.

Le site de l'intégration n'a besoin d'avoir accès que aux `Données publiques` puisqu'il se sert du site étudiant uniquement pour l'authentification.

Une fois l'application créée sur EtuUTT, récupérez le `client id` et `client secret` pour les mettre dans le fichier `.env` sous les clées `ETUUTT_CLIENT_ID` et `ETUUTT_CLIENT_SECRET`.

Une fois fait, vous devriez pouvoir vous connecter via le formulaire de connexion dédié aux étudiants.

### Ajout d'un administrateur

Vous pouvez vous connecter, mais vous ne serez qu'un simple bénévole. Pour devenir admin, il vous suffit de lancer la commande suivante

```
php artisan integration:user:set-admin
```

### Remplissage de la base de donnée

Si vous ne disposez pas de données réelles, vous voudrez sans-doute remplir la base de donnée avec des utilisateurs et équipes aléatoires. Pour cela, lancez la commande suivante

```
php artisan db:seed
```

### Envoi des emails

Le `MAIL_DRIVER` par défaut est `log`. Cela veut dire que tous les emails envoyés finiront dans les logs et que vous pouvez jouer avec le site sans craindre d'envoyer des emails en masses à tous les nouveaux. Vous retrouverez le contenu des emails envoyés dans `storage/logs/laravel-*.log`

Cependant, comme l'envoi d'email se fait en asynchrone via le mécanisme de queue de laravel, l'envoi d'email ne fonctionnera pas jusqu'à ce que vous executiez la commande suivante

```
php artisan queue:listen
```

### Production
Pour la mise en production, vous pouvez suivre une bonne partie des sections précédentes. Cependant, assurez vous aussi de lancer le processus de queue en tache de fond :

```
php artisan queue:work --queue=high,low --sleep=3 --tries=3 --daemon
```

Ainsi que les cron suivantes

```
# Import régulier des nouveaux utilisateurs depuis l'utt
*/5 * * * * php artisan integration:newcomers:import
# Divers taches dont l'envoi d'email
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
```

## Documentation générale
### Import des photos de profile des étudiants

Assurez vous que le dossier `public/uploads/students-trombi` existe, puis executez la commande suivante :
```
php artisan integration:students:importPictures
```

### Week-end d'intégration

Les inscriptions au week-end d'intégration sont gérées depuis l'interface d'administration :
les personnes n'ont pas à renseigner elles-même leurs informations.

Une inscription est considérée comme complète uniquement si les critères suivants sont réunis :
* Le chèque de paiement et de caution sont bien donnés.
* Si la personne est mineure lors du jour de départ du WEI, l'autorisation
parentale a été donnée.
* Toutes les informations nécessaires au contact de la personne (email, téléphone)
sont présentes.
* Le montant de tous les chèques donnés lors de l'inscription correspondent au
prix du WEI et de la caution.

Les chèques sont gérés dans une table différente des inscriptions au WEI, dans
le but de pouvoir faire la distinction entre chèque de caution et de paiement.
Les informations liées à chaque chèque (numéro, banque, émetteur) sont enregistrées
dans la table `checks`.

### Configuration

#### EtuUTT

Les parrains, CE et admins sont identifiés via le site etudiant EtuUTT. Il faut
donc créer une application sur le site avec comme URL de redirection `https://integration.utt.fr/oauth/callback`.
Vous devez aussi cocher le scope `Données privées`

Ensuite il faut configurer les champs suivants dans le fichier `.env` :

* `ETUUTT_CLIENT_ID` : Application Id donné par EtuUTT
* `ETUUTT_CLIENT_SECRET` : Application Secret donné par EtuUTT

#### Application mobile

* Pour les nouveaux :

L'application est considérée comme cliente du site d'intégration, il faut mettre ses credentials intégration dans le fichier config.js à la racine et builder les packages :

```javascript
export default {
inte_client_id: "your client id",
inte_client_secret: "your client secret",
inte_url: "https://integration.utt.fr/api/",
}
```

* Pour les anciens :

L'authentification se fait via les étapes suivantes :

* l'application requête une url du site d'intégration qui lui renvoie l'url du site etu avec le client id, ... générée via les variables `ETUUTT_MOBILE_CLIENT_ID` et `ETUUTT_MOBILE_CLIENT_SECRET`

L'application mobile est identifiée comme une application externe sur le site etu : il faut donc la créer avec les paramètres suivants :

* Accès données publiques et privées
* URL de retour : `http://localhost:8100/`

#### Reconfiguration annuelle

Pour adapter le site de l'intégration à l'année, voir le document [Mise à jour annuelle](docs/annual_update.md).