Commit c5aed4b3 authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

0.0.13

parent 2daf0f1e
Loading
Loading
Loading
Loading
+1 −1
Changes for .gitlab-ci.yml: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ publish_php:
  rules:
      - if: '$CI_COMMIT_TAG'
  script:
    - curl https://gest.unicaen.fr/packagist/update
    - export NO_PROXY=unicaen.fr ; curl 'https://packagist.unicaen.fr/build?name=unicaen-modern/authentification

# Publier sur GitLab Registry
publish_js:
+6 −0
Changes for CHANGELOG.md: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
CHANGELOG

0.0.13 (26/03/2026)
------------------
- Mise en place de l'authentifiction CAS coté API dans la lib
- Configuration du Bundel et injection des services
- Documentations

0.0.12 (20/03/2026)
------------------
- Event de logout en cas de déconnexion
+5 −47
Changes for README.md: 5 added lines, 47 removed lines.
Original line number Diff line number Diff line
# Unicaen Authentification


## Structure du projet

```
/api       # Code source du bundle API Platform
/frontend  # Code source du composant Vue.js
```

## Prérequis

- **PHP** >= 8.2
- **Composer**
- **Node.js** >= 16
- **Yarn** ou **npm**

## Installation

### API

1. Composer install
    ```bash
    composer install unicaen-modern/authentification
    ```
- **npm**

### Frontend

1. Ajouter le .npmrc à côté de votre package.json pur référencer le registry de l'Université de Caen :
    ```bash
    echo "@unicaen:registry=https://git.unicaen.fr/api/v4/groups/6549/-/packages/npm/" > .npmrc
    ```

2. Installer le package
    ```bash
    npm install @unicaen/authentification
    ```

3. Importer et déclarer le composant dans votre projet Vue.js, généralement main.js :
    ```javascript
   import { AuthentificationPlugin } from '@unicaen/authentification'
   
   // Create app etc...
## Structure du projet

   app.use(AuthentificationPlugin, { axios: axiosInstance})
```
   Vous devez passer votre instance axios à l'option `axios` pour que le composant puisse communiquer avec l'API en utilisant votre système d'authentification.

4. Configuration du token JWT
Dans `config/packages/gesdinet_jwt_refresh_token.yaml`
```yaml
gesdinet_jwt_refresh_token:
    # Définit l'entité PHP qui sera utilisée pour stocker les jetons en base de données.
    refresh_token_class: Unicaen\Authentification\Entity\RefreshToken
   #...
/api       # Code source du bundle API Platform
/frontend  # Code source du composant Vue.js
```

## Configuration pour Ldap
Si vous souhaitez utiliser l'authentification par LDAP  : [LDAP.md](api/documentation/LDAP.md)

Cf [api](api/README.md) et [frontend](frontend/README.md) pour plus de détails

## Contribution

@@ -70,7 +29,6 @@ Les contributions sont les bienvenues. Merci de suivre les bonnes pratiques de d
- Authentification SHIBB
- Usurpation
- Autres fonctionnalité présente actuellement dans UnicaenAuthentification ?
- Faire en sorte que l'on puisse configurer le menu d'authentification (ie : nom des btn, pas besoin de choisir "local" pour une authentification LDAP/cas ...)

## Licence

api/CHANGELOG.md

0 → 100644
+10 −0
Changes for api/CHANGELOG.md: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
CHANGELOG
============

0.0.13 (24/03/2026)
------------------
- Authentification par CAS

0.0.12 (20/03/2026)
------------------
- Authentification par LDAP ou compte locaux
 No newline at end of file

api/README.md

0 → 100644
+85 −0
Changes for api/README.md: 85 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Unicaen Authentification -- Api
============

Ce module est en charge de l'authentification via apiPlateforme 

## Types d'authentifications
Ce module gére pour le moment 3 types d'authentifications et 1 à venir
- Local
- [CAS.md](documentations/CAS.md) (plus local)
- [LDAP.md](documentations/LDAP.md)
- _Shib (à venir)_

## Installation
----------------------------------

### Prérequis
- [Docker-compose](https://docs.docker.com/compose/install/)

### Comande

```console
composer require unicaen-modern/authentification
```

### Config

L'utilisation des différentes méthodes d'authentification nécéssite de les configurer dans config/packages/security.yaml
```yaml
security:
    firewalls:
        main:
            entry_point: jwt # En cas d'accès refusé, c'est le système JWT qui répond

            # Configuration de la connexion initiale (Login)
            json_login:
                check_path: auth
                username_path: username # LDAP necessite obligatoirement d'utiliser le champs username et non l'email
                password_path: password
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure

            # Active l'authentification par jeton JWT pour les requêtes suivantes
            jwt: ~

            # Gestion du renouvellement du jeton (Refresh Token)
            refresh_jwt:
                check_path: auth_refresh_token

            # Route de déconnexion
            logout:
                path: auth_logout

            # Authentificateurs personnalisés (Commenter ceux non utilisés)
            custom_authenticator:
                - Unicaen\Authentification\Security\CasAuthenticator
                - Unicaen\Authentification\Security\LdapAuthenticator

    # Contrôle d'accès : définit les rôles nécessaires pour chaque URL.
    access_control:
        - { path: ^/auth, roles: PUBLIC_ACCESS } # Connexion publique obligatoire
        - { path: ^/auth/cas, roles: PUBLIC_ACCESS }  # (commenter si CAS non utilisé)
```

La déclaration des routes d'authentification de l'api est à définir dans votre répertoire /config/routes/
Le fichier [unicaen_authentification.yaml.dist](documentations/config/unicaen_authentification.yaml.dist) est un exemple que l'on peut copier/coller

La déclaration des routes d'authentification de l'api est à définir dans votre répertoire /config/routes/
Le fichier [gesdinet_jwt_refresh_token.yaml.dist](documentations/config/gesdinet_jwt_refresh_token.yaml.dist) est un exemple que l'on peut copier/coller


## Améliorations a venir

- Paramètrage pour la création de l'utilisateur
- Système d'usurpation
- Paramètrage du type d'authentification 
- Authentification via Shibb

**Configuration des routes :**

Trouver comment intégrer directement la configuration des routes dans le bundle et ne plus avoir a copier/coller [unicaen_authentification.yaml.dist](./config/routes/unicaen_authentification.yaml.dist)

- Une approche qui vient de la v2 de Symfony : https://symfony.com/doc/2.x/routing/external_resources.html est fonctionnelle mais ne seras sans doute pas maintenue
- L'approche par déclaration de routes dans [CasController.php](src/Controller/CasController.php) (ou un autre) est fonctionnelle pour les routes de CAS, mais pas pour /auth/refresh qui repose sur un controlleur de JWT

_Ceci est une note en cours de rédaction, probablement incompléte. Toute contibution est la bienvenue_
Loading