Skip to content

Commit

Permalink
Authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
ottosmops committed Jan 31, 2024
1 parent 2d105d9 commit 6d69f3b
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 98 deletions.
15 changes: 8 additions & 7 deletions docs/admin/two-factor-auth.md → docs/admin/authentication.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
# Two-Factor Authentication
# Authentication

## Activate
## Two-Factor Authentication
### Activate

The two-factor authentication can be enabled with an enztry in the `.env` file:
The two-factor authentication can be enabled with an entry in the `.env` file:

```
2FA=1
```

In the settings (`two-factor-auth-role`) you can set a role for which the 2FA is obligatory. If for example editor is specified, a 2FA is mandatory for editor and admin.

### Deactivate 2FA for a User

If a user has lost the two-factor secrets and has also no recovery code, it is possible to remove this from the user so that it is possible to start over with a fresh 2FA.

## Registration

It is also possible via the `.env` file to allow user registration:

```
REGISTRATION=1
```

## Deactivate 2FA for a User

If a user has lost the two-factor secrets and has also no recovery code, it is possible to remove this from the user so that it is possible to start over with a fresh 2FA.
86 changes: 86 additions & 0 deletions docs/admin/inge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Inge und Dimag

With Inge it is possible to integrate DIMAG as a data repository. The original files are then not stored on the Anton file system, but in DIMAG. Only files that have been optimized for use on the Internet are then stored in Anton. If required, internal users can download the original files. So there is no difference for the users.

## Requirements
- Setting `fulltext-from-webpdf`: true
- Setting `cloud`: "inge"
- .env INGE_API_TOKEN
- User "Inge" with Email address and api_token for Inge

### Ablauf des SIP-Ingest

#### Anton
- User: SIP Upload (zip) (`/sip/uploadsip`)
- User: SIP Validation (`/sip/validation`)
- Anton kann das SIP auspacken (unzip) und die Metadaten-Datei ist lesbar.
- Die Dateien aus dem SIP sind vorhanden und die Prüfsummen sind korrekt.
- Anton kann für jedes Dossier im SIP einen parent in Anton finden.
- User: Anton-Ingest (`/sip/ingest`)
- Backup der Datenbank
- Import SIP (`<dossier>` and `<dokument>`/`<datei>`)
- SIP Eintrag im Akzessionsarchiv («Entwurf»)
- Import Dossiers and Dokumente/Dateien
- Anton erstellt Web-Versionen und Thumbs
- falls der SIP-Ingest mit Inge und DIMAG erfolgt löscht die Masterdateien
- Signaturen und Dateinamen basieren zunächst auf UUIDs
- Post Import
- Update der Archiv-Hierarchie (`path`)
- Anton ersetzt UUID-Signaturen mit korrekten Signaturen und benennt die Medien entsprechend um
- Update der Datierungen und des Volltextindexes

#### Ingest mit Inge in DIMAG
- Anton schickt einen Request an Inge mit dem SIP and einer Liste der Anton-Medien-Ids
- Inge: Ingest der Dateien in DIMAG
- Inge erstellt eine loadXML-Datei
- Inge erstellt ein Ingest-Paket und sichert es auf DIMAGs SFTP-Storage
- Inge sendet einen Request an DIMAG: Ingest des SIP
- DIMAG: Importiert das Paket and sendet das Resultat an Inge
- Inge: Inge sendet das Resultat an Anton
- Anton: Finalisiere den SIP-Ingest
- Bestätige den SIP-Ingest (SIP Eintrag ist «Final») oder stelle den Zustand vor dem Ingest aus dem Backup wieder her
- Schicke eine Email an User Inge mit dem Resultat

### Abfrage eines Master Files

![Ablauf Ingest mit Inge und DIMAG](images/Anton-Inge-Abruf.drawio.png)


## CLI
```bash
php artisan anton:import --env {slug} --from-sip --no-validation
--create-actors -vv {path/to/sip} --import
```

### Revert a SIP Import or Confirm Import with Inge

Before a SIP Import Anton backups the database, so if anything goes wrong you can come back to the status before the Import.

The backup name is stored in the SIP-Entry and the `Status of description` is set to draft.

This will restore the database from the last/actual backup and sync the media with the database (namely delete media wich are not registered in the database):

```bash
php artisan anton:sip-import --env {slug} --id {sip_id} -vv --revert
```

The `sip_id` is the ID of an AntonObject which is a SIP.

This will set the `Status of description` in the SIP-Entry to "final":

```bash
php artisan anton:sip-import --env {slug} --id {sip_id} -vv --confirm
```


### Debugging

#### Check the SIP Import Data

```bash
php artisan sip:check --env {slug} --path {path_to_sip} --show-sip_entry
```

```bash
php artisan sip:check --env {slug} --path {path_to_sip} --show-import-array
```
5 changes: 3 additions & 2 deletions docs/admin/requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ Anton v.0.27.0 is a [Laravel](https://laravel.com/) Version 9 Application.
- [supervisor](http://supervisord.org/)

[^OS]: Other Operating Systems of the Linux or Unix-Family should also do the trick.
<!--[^mysql]: MariaDB is not tested and is not recommended at the moment, because of its [JSON Implementation](https://elephantdolphin.blogspot.com/2018/11/a-tale-of-two-json-implementations.html).
The '->>' Operator is actually used in Model AntonEvent.php -->
<!--
[^mysql]: MariaDB is not tested and is not recommended at the moment, because of its [JSON Implementation](https://elephantdolphin.blogspot.com/2018/11/a-tale-of-two-json-implementations.html).
-->
105 changes: 17 additions & 88 deletions docs/admin/sip-ingest.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
## SIP Ingest

Anton ermöglicht den Import/Ingest von Submission Information Packages (SIP) gemäss eCH-0160. Dabei werden die Dossiers und die Dokumente in die Archivtektonik importiert.
Anton enables the import/ingest of Submission Information Packages (SIP) in accordance with eCH-0160, whereby the files (dossiers) and documents are imported into the archive tectonics.

Zum Standard: [https://ech.ch/de/ech/ech-0160/1.2.0](https://ech.ch/de/ech/ech-0160/1.2.0)

Mit Inge ist es möglich, DIMAG als Datenrepository einzubinden. Die Originaldateien werden dann nicht auf dem Filesystem von Anton, sondern in DIMAG gespeichert. In Anton werden dann nur Dateien, die für die Verwendung im Internet optimiert wurden vorgehalten. Bei Bedarf können interne User die Originaldateien herunterladen. Für die User gibt es also keinen Unterschied.
### Requrirements

### Voraussetzungen
#### Anton
- Accession archive (Akzessionsarchiv): A (locked) archive whose ID is entered in the `accessions_archives_id` setting.
- The archive hierarchy (parents) must already exist in Anton.
- If the identifiers in the archive hierarchy have a prefix, this must be set (setting: identifier-prefix)
- With the setting strict_sip_validation, Anton issues an error during validation if a file is not found in the SIP.
- Anton Form (default_intern):
- sip_id: Contains the linked signature to the entry of the SIP in the accession archive (should be default_internal in the form)
- note.sip_md5sum, note.actual_backup should be in the default_internal form (displayed at fonds level/SIP)

!!! note "Example for the setting identifier-prefix"
The parent element (`<ordnungssystemposition>`) of the `<dossier>` corresponds to the `parent` in Anton. The `parent` in Anton is determined based on the content of the `<number>` element in the SIP. For example, if this number is "0.6.6", but the archive signature is "A.1.4.0.6.6", the prefix must be filled in accordingly with "A.1.4.".

<!--
### Requrirements
#### Anton
- Akzessionsarchiv: Ein (gesperrtes) Archiv, dessen ID in das Setting `accessions_archives_id` eingetragen wird.
Expand All @@ -20,88 +33,4 @@ Mit Inge ist es möglich, DIMAG als Datenrepository einzubinden. Die Originaldat
!!! note "Beispiel zum identifier-prefix"
Das Elternelement (`<ordnungssystemposition>`) des `<dossier>` entspricht dem `parent` in Anton. Der `parent` in Anton wird anhand des Inhalts des Elements `<nummer>` im SIP bestimmt. Wenn also zum Beispiel diese Nummer "0.6.6" lautet, die Archivsignatur aber "A.1.4.0.6.6" ist, ist entsprechend das Prefix mit "A.1.4." auszufüllen.

#### Inge und DIMAG
- Setting `fulltext-from-webpdf`: true
- Setting `cloud`: "inge"
- .env INGE_API_TOKEN setzen
- User "Inge" mit Email-Adresse und api_token für Inge

### Ablauf des SIP-Ingest

![Ablauf Ingest mit Inge und DIMAG](images/Anton-Inge-Ingest.drawio.png)

#### Anton
- User: SIP Upload (zip) (`/sip/uploadsip`)
- User: SIP Validation (`/sip/validation`)
- Anton kann das SIP auspacken (unzip) und die Metadaten-Datei ist lesbar.
- Die Dateien aus dem SIP sind vorhanden und die Prüfsummen sind korrekt.
- Anton kann für jedes Dossier im SIP einen parent in Anton finden.
- User: Anton-Ingest (`/sip/ingest`)
- Backup der Datenbank
- Import SIP (`<dossier>` and `<dokument>`/`<datei>`)
- SIP Eintrag im Akzessionsarchiv («Entwurf»)
- Import Dossiers and Dokumente/Dateien
- Anton erstellt Web-Versionen und Thumbs
- falls der SIP-Ingest mit Inge und DIMAG erfolgt löscht die Masterdateien
- Signaturen und Dateinamen basieren zunächst auf UUIDs
- Post Import
- Update der Archiv-Hierarchie (`path`)
- Anton ersetzt UUID-Signaturen mit korrekten Signaturen und benennt die Medien entsprechend um
- Update der Datierungen und des Volltextindexes

#### Ingest mit Inge in DIMAG
- Anton schickt einen Request an Inge mit dem SIP and einer Liste der Anton-Medien-Ids
- Inge: Ingest der Dateien in DIMAG
- Inge erstellt eine loadXML-Datei
- Inge erstellt ein Ingest-Paket und sichert es auf DIMAGs SFTP-Storage
- Inge sendet einen Request an DIMAG: Ingest des SIP
- DIMAG: Importiert das Paket and sendet das Resultat an Inge
- Inge: Inge sendet das Resultat an Anton
- Anton: Finalisiere den SIP-Ingest
- Bestätige den SIP-Ingest (SIP Eintrag ist «Final») oder stelle den Zustand vor dem Ingest aus dem Backup wieder her
- Schicke eine Email an User Inge mit dem Resultat

### Abfrage eines Master Files

![Ablauf Ingest mit Inge und DIMAG](images/Anton-Inge-Abruf.drawio.png)


## CLI
```bash
php artisan anton:import --env {slug} --from-sip --no-validation
--create-actors -vv {path/to/sip} --import
```

### Revert a SIP Import or Confirm Import with Inge

Before a SIP Import Anton backups the database, so if anything goes wrong you can come back to the status before the Import.

The backup name is stored in the SIP-Entry and the `Status of description` is set to draft.

This will restore the database from the last/actual backup and sync the media with the database (namely delete media wich are not registered in the database):

```bash
php artisan anton:sip-import --env {slug} --id {sip_id} -vv --revert
```

The `sip_id` is the ID of an AntonObject which is a SIP.

This will set the `Status of description` in the SIP-Entry to "final":

```bash
php artisan anton:sip-import --env {slug} --id {sip_id} -vv --confirm
```


### Debugging

#### Check the SIP Import Data

```bash
php artisan sip:check --env {slug} --path {path_to_sip} --show-sip_entry
```

```bash
php artisan sip:check --env {slug} --path {path_to_sip} --show-import-array
```
-->
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,12 @@ nav:
- Requirements: admin/requirements.md
- Installation: admin/installation.md
- Configuration: admin/configuration.md
- Two-Factor Authentication: admin/two-factor-auth.md
- Authentication: admin/authentication.md
- Word Export: admin/word-export.md
- Watermarks: admin/watermarks.md
- Mastodon: admin/mastodon.md
- SIP Ingest: admin/sip-ingest.md
- Inge and Dimag: admin/inge.md
- Shrink for Public: admin/shrink.md
- Restore from Backup: admin/restore.md
- Commands: admin/console-commands.md
Expand Down

0 comments on commit 6d69f3b

Please sign in to comment.