b4um_generators 0.2.17 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.de.md +418 -4
- data/README.md +405 -5
- data/lib/b4um_generators/version.rb +1 -1
- data/lib/generators/b4um/admin/admin_generator.rb +614 -0
- data/lib/generators/b4um/admin/templates/add_admin_fields_migration.rb.tt +10 -0
- data/lib/generators/b4um/admin/templates/admin_base_controller.rb.tt +5 -0
- data/lib/generators/b4um/admin/templates/admin_dashboard.html.erb.tt +19 -0
- data/lib/generators/b4um/admin/templates/admin_dashboard_controller.rb.tt +6 -0
- data/lib/generators/b4um/admin/templates/admin_users_controller.rb.tt +70 -0
- data/lib/generators/b4um/admin/templates/admin_users_index.html.erb.tt +110 -0
- data/lib/generators/b4um/admin/templates/b4um_admin.rake.tt +106 -0
- data/lib/generators/b4um/authentication/authentication_generator.rb +90 -1
- data/lib/generators/b4um/guest/guest_generator.rb +673 -0
- data/lib/generators/b4um/guest/templates/add_guest_fields_migration.rb.tt +12 -0
- data/lib/generators/b4um/guest/templates/b4um_guests.rake.tt +12 -0
- data/lib/generators/b4um/guest/templates/edit.html.erb.tt +156 -0
- data/lib/generators/b4um/guest/templates/guest_expiration_warning.html.erb.tt +12 -0
- data/lib/generators/b4um/guest/templates/guests_controller.rb.tt +88 -0
- data/lib/generators/b4um/guest/templates/new.html.erb.tt +136 -0
- data/lib/generators/b4um/help/help_generator.rb +228 -0
- data/lib/generators/b4um/install/templates/b4um/sortable.css +158 -0
- data/lib/generators/b4um/install/templates/b4um.css +1 -0
- data/lib/generators/b4um/pagination/pagination_generator.rb +32 -5
- data/lib/generators/b4um/scaffold/scaffold_generator.rb +50 -0
- data/lib/generators/b4um/scaffold/templates/_form.html.erb.tt +18 -14
- data/lib/generators/b4um/search/search_generator.rb +22 -8
- data/lib/generators/b4um/sortable/sortable_generator.rb +529 -0
- data/lib/generators/b4um/sortable/templates/_sortable.html.erb.tt +40 -0
- data/lib/generators/b4um/sortable/templates/add_position_migration.rb.tt +26 -0
- data/lib/generators/b4um/sortable/templates/sort.html.erb.tt +3 -0
- data/lib/generators/b4um/sortable/templates/sortable_controller.js +166 -0
- metadata +22 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 15fb9392677d61fa44d0d18bfa6fa71f8cde33202c1d3ab846eeded8cc255240
|
|
4
|
+
data.tar.gz: 07256f3c068de795270adf8e1376f155f657c6a13b4d356ce414a289c6456be2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c2c4efca4c04e8e8ef528e246d16c2e536c1b54e6dd356c284e96659664756edeacdfcb93d135cbebdf39ace19f869c5ca49dafbfe5ad9867c3703c92228bb8b
|
|
7
|
+
data.tar.gz: af333b2df50d0530cfbf701b3fa040a80ba5d716cae4a67909be39d1f59d5c1bad6795b9a39691284e6cce2e867ed512ec7cf047f72bdff579db3741e8349ee6
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to b4um Generators will be documented in this file.
|
|
4
|
+
|
|
1
5
|
## [Unreleased]
|
|
2
6
|
|
|
7
|
+
## [0.4.0] - 2026-10-12
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added administrator management with `b4um:admin`
|
|
12
|
+
- Added command-line creation of the first administrator
|
|
13
|
+
- Added blocking, unblocking, deletion and administrator permission management
|
|
14
|
+
- Added `--required` support to the scaffold generator
|
|
15
|
+
- Added automatic required-field handling in generated forms
|
|
16
|
+
- Added temporary guest access with `b4um:guest`
|
|
17
|
+
- Added configurable guest account expiration with `--expires-in`
|
|
18
|
+
- Added guest-to-regular-account conversion while preserving the existing account record
|
|
19
|
+
- Added cleanup task for expired guest accounts
|
|
20
|
+
- Added guest expiration warnings
|
|
21
|
+
- Added dynamic field detection for administrator and guest account creation
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Improved authentication integration with required model fields
|
|
26
|
+
- Improved administrator creation prompts and validation handling
|
|
27
|
+
- Improved administrator creation after guest access has been installed
|
|
28
|
+
- Improved generated Admin dashboard and user management layouts
|
|
29
|
+
- Improved migration generation to avoid duplicate migration version numbers
|
|
30
|
+
- Improved English and German documentation
|
|
31
|
+
- Extended `b4um:help` with Admin and Guest documentation
|
|
32
|
+
|
|
3
33
|
## [0.1.0] - 2026-09-17
|
|
4
34
|
|
|
5
35
|
- Initial release
|
data/README.de.md
CHANGED
|
@@ -6,8 +6,8 @@ b4um Generators ist eine Sammlung wiederverwendbarer Rails-Generatoren, Template
|
|
|
6
6
|
für b4um-Rails-Projekte.
|
|
7
7
|
|
|
8
8
|
Das Gem bietet eine einheitliche Grundlage für Rails-Anwendungen und enthält Generatoren für Scaffolds, Controller,
|
|
9
|
-
Bento-Layouts, Tabellen, Pagination, Infinite Scroll, Suche, Kommentare, Authentifizierung,
|
|
10
|
-
Rich-Text-Bearbeitung.
|
|
9
|
+
Bento-Layouts, Tabellen, Pagination, Infinite Scroll, Suche, Kommentare, Authentifizierung, Administration, Gastzugänge,
|
|
10
|
+
Attachments und Rich-Text-Bearbeitung.
|
|
11
11
|
|
|
12
12
|
Die generierten Komponenten verwenden ein gemeinsames b4um-Styling und sind darauf ausgelegt, miteinander zu
|
|
13
13
|
funktionieren.
|
|
@@ -24,7 +24,7 @@ b4um Generators wird während der Entwicklung derzeit als lokales Gem verwendet.
|
|
|
24
24
|
Füge das Gem zur `Gemfile` der Rails-Anwendung hinzu:
|
|
25
25
|
|
|
26
26
|
```ruby
|
|
27
|
-
gem "b4um_generators", "~> 0.
|
|
27
|
+
gem "b4um_generators", "~> 0.4.0", path: "/pfad/zu/b4um_generators"
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Führe anschließend aus:
|
|
@@ -81,9 +81,12 @@ b4um:controller
|
|
|
81
81
|
b4um:pagination
|
|
82
82
|
b4um:infinite_scroll
|
|
83
83
|
b4um:search
|
|
84
|
+
b4um:sortable
|
|
84
85
|
b4um:comments
|
|
85
86
|
b4um:in_place
|
|
86
87
|
b4um:authentication
|
|
88
|
+
b4um:admin
|
|
89
|
+
b4um:guest
|
|
87
90
|
b4um:trix
|
|
88
91
|
b4um:readable
|
|
89
92
|
b4um:help
|
|
@@ -115,6 +118,7 @@ Der Scaffold-Generator bietet:
|
|
|
115
118
|
- Index-, Show-, New- und Edit-Views
|
|
116
119
|
- Standardmäßig ein Bento-Index-Layout
|
|
117
120
|
- Optionales Tabellen-Index-Layout
|
|
121
|
+
- Pflichtfelder mit `presence`-Validierung
|
|
118
122
|
- Select-Felder mit eigenen Anzeigebezeichnungen
|
|
119
123
|
- Radio-Felder mit eigenen Anzeigebezeichnungen
|
|
120
124
|
- Automatischen Navigationseintrag
|
|
@@ -124,6 +128,34 @@ Der Scaffold-Generator bietet:
|
|
|
124
128
|
- Unterstützung für Passwortfelder
|
|
125
129
|
- Optionale lesbare URL-Parameter
|
|
126
130
|
|
|
131
|
+
### Pflichtfelder
|
|
132
|
+
|
|
133
|
+
Mit `--required` können Felder ausgewählt werden, für die der Scaffold-Generator eine `presence`-Validierung im Modell
|
|
134
|
+
erzeugt.
|
|
135
|
+
|
|
136
|
+
Verwende:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
--required=FIELD,FIELD
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Beispiel:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
bin/rails generate b4um:scaffold Customer first_name:string last_name:string company:string email:string --required=first_name,last_name,email
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Dadurch wird dem generierten Modell folgende Validierung hinzugefügt:
|
|
149
|
+
|
|
150
|
+
```ruby
|
|
151
|
+
validates :first_name, :last_name, :email, presence: true
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Felder, die nicht mit `--required` angegeben werden, bleiben optional.
|
|
155
|
+
|
|
156
|
+
`--required` kann mit den anderen Scaffold-Optionen wie `--select`, `--radio`, `--layout` und `--param` kombiniert
|
|
157
|
+
werden.
|
|
158
|
+
|
|
127
159
|
### Select- und Radio-Felder
|
|
128
160
|
|
|
129
161
|
Der Scaffold-Generator kann String-Attribute als Select- oder Radio-Felder mit eigenen Anzeigebezeichnungen erzeugen.
|
|
@@ -545,6 +577,308 @@ passenden Vorschlag für einen b4um-Scaffold-Befehl ab.
|
|
|
545
577
|
Bei wiederholter Ausführung werden Authentifizierungs-Helper, Routen, Navigationselemente und Controller-Schutz nicht
|
|
546
578
|
dupliziert.
|
|
547
579
|
|
|
580
|
+
## Administration
|
|
581
|
+
|
|
582
|
+
Füge einem bestehenden b4um-Authentifizierungsmodell eine Benutzer- und Administratorverwaltung hinzu:
|
|
583
|
+
|
|
584
|
+
```bash
|
|
585
|
+
bin/rails generate b4um:admin MODEL
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
Beispiel:
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
bin/rails generate b4um:admin User
|
|
592
|
+
bin/rails db:migrate
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
Der Admin-Generator baut auf der bestehenden b4um-Authentifizierung auf. Für das ausgewählte Modell muss daher zuerst
|
|
596
|
+
die b4um-Authentifizierung eingerichtet werden.
|
|
597
|
+
|
|
598
|
+
Ein vollständiger Ablauf sieht so aus:
|
|
599
|
+
|
|
600
|
+
```bash
|
|
601
|
+
bin/rails generate b4um:scaffold User name:string email:string password_digest:string
|
|
602
|
+
bin/rails db:migrate
|
|
603
|
+
|
|
604
|
+
bin/rails generate b4um:authentication User
|
|
605
|
+
|
|
606
|
+
bin/rails generate b4um:admin User
|
|
607
|
+
bin/rails db:migrate
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
Der Admin-Generator fügt dem Authentifizierungsmodell zwei boolesche Felder hinzu:
|
|
611
|
+
|
|
612
|
+
```text
|
|
613
|
+
admin
|
|
614
|
+
blocked
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
Beide Felder haben standardmäßig den Wert `false`.
|
|
618
|
+
|
|
619
|
+
Der Generator fügt außerdem Folgendes hinzu:
|
|
620
|
+
|
|
621
|
+
- Admin-Dashboard
|
|
622
|
+
- Schutz des Admin-Bereichs
|
|
623
|
+
- Benutzerverwaltung
|
|
624
|
+
- Admin-Routen
|
|
625
|
+
- Benutzer sperren und entsperren
|
|
626
|
+
- Administratorrechte vergeben und entziehen
|
|
627
|
+
- Benutzer löschen
|
|
628
|
+
- Schutz vor dem Sperren des eigenen Kontos
|
|
629
|
+
- Schutz vor dem Löschen des eigenen Kontos
|
|
630
|
+
- Schutz vor dem Entziehen der Rechte des letzten Administrators
|
|
631
|
+
- Verhinderung der Anmeldung gesperrter Benutzer
|
|
632
|
+
- Automatische Ungültigmachung bestehender Sitzungen gesperrter Benutzer
|
|
633
|
+
|
|
634
|
+
### Ersten Administrator anlegen
|
|
635
|
+
|
|
636
|
+
Administratorrechte können nicht über die öffentliche Registrierung vergeben werden.
|
|
637
|
+
|
|
638
|
+
Nach dem Ausführen des Admin-Generators und der Datenbankmigration wird der erste Administrator über die Kommandozeile
|
|
639
|
+
angelegt:
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
bin/rails b4um:admin:create
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
Führe vor dem Anlegen des ersten Administrators die Datenbankmigration aus:
|
|
646
|
+
|
|
647
|
+
```bash
|
|
648
|
+
bin/rails db:migrate
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
Die Aufgabe erkennt zusätzliche Felder des Authentifizierungsmodells automatisch.
|
|
652
|
+
|
|
653
|
+
Felder mit einer unbedingten `presence`-Validierung werden mit `*` gekennzeichnet und müssen ausgefüllt werden. Andere
|
|
654
|
+
erkannte Felder sind optional und können leer bleiben.
|
|
655
|
+
|
|
656
|
+
E-Mail-Adresse, Passwort und Passwortbestätigung sind immer erforderlich.
|
|
657
|
+
|
|
658
|
+
Ein Authentifizierungsmodell mit den Pflichtfeldern `first_name` und `last_name` sowie dem optionalen Feld `company`
|
|
659
|
+
kann zum Beispiel zu folgender Abfrage führen:
|
|
660
|
+
|
|
661
|
+
```text
|
|
662
|
+
First name *: Alex
|
|
663
|
+
Last name *: Beispiel
|
|
664
|
+
Company:
|
|
665
|
+
Email *: admin@example.com
|
|
666
|
+
Password *:
|
|
667
|
+
Confirm password *:
|
|
668
|
+
Administrator admin@example.com was created successfully.
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
Das Passwort wird während der Eingabe im Terminal nicht angezeigt.
|
|
672
|
+
|
|
673
|
+
Wurde die Admin-Migration noch nicht ausgeführt, bricht die Aufgabe ab und weist darauf hin, `bin/rails db:migrate`
|
|
674
|
+
auszuführen.
|
|
675
|
+
|
|
676
|
+
Das Konto wird mit folgenden Werten angelegt:
|
|
677
|
+
|
|
678
|
+
```text
|
|
679
|
+
admin: true
|
|
680
|
+
blocked: false
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Existiert bereits ein Konto mit der eingegebenen E-Mail-Adresse, bricht die Aufgabe ab. Ein vorhandenes Konto erhält
|
|
684
|
+
dadurch nicht automatisch Administratorrechte.
|
|
685
|
+
|
|
686
|
+
Bestehende Benutzer können nach dem Anlegen des ersten Administrators über die Admin-Benutzerverwaltung zu
|
|
687
|
+
Administratoren gemacht werden.
|
|
688
|
+
|
|
689
|
+
### Admin-Bereich
|
|
690
|
+
|
|
691
|
+
Der generierte Admin-Bereich ist erreichbar unter:
|
|
692
|
+
|
|
693
|
+
```text
|
|
694
|
+
/admin
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
Nur ein angemeldetes Konto mit Administratorrechten kann auf diesen Bereich zugreifen.
|
|
698
|
+
|
|
699
|
+
Das Admin-Dashboard führt zur generierten Benutzerverwaltung.
|
|
700
|
+
|
|
701
|
+
Dort können Administratoren:
|
|
702
|
+
|
|
703
|
+
- Benutzer sperren
|
|
704
|
+
- Benutzer entsperren
|
|
705
|
+
- Administratorrechte vergeben
|
|
706
|
+
- Administratorrechte entziehen
|
|
707
|
+
- Benutzer löschen
|
|
708
|
+
|
|
709
|
+
Der aktuell angemeldete Administrator kann sein eigenes Konto über die generierte Benutzerverwaltung weder sperren noch
|
|
710
|
+
löschen.
|
|
711
|
+
|
|
712
|
+
Dem letzten verbliebenen Administrator können die Administratorrechte nicht entzogen werden. Dadurch wird verhindert,
|
|
713
|
+
dass eine Anwendung versehentlich ohne Administrator zurückbleibt.
|
|
714
|
+
|
|
715
|
+
### Benutzer sperren
|
|
716
|
+
|
|
717
|
+
Beim Sperren eines Benutzers wird das Feld `blocked` des Authentifizierungsmodells auf `true` gesetzt.
|
|
718
|
+
|
|
719
|
+
Ein gesperrter Benutzer kann sich auch mit dem richtigen Passwort nicht anmelden.
|
|
720
|
+
|
|
721
|
+
Wird ein bereits angemeldeter Benutzer gesperrt, wird seine bestehende Sitzung ungültig, sobald die Authentifizierung
|
|
722
|
+
erneut geprüft wird.
|
|
723
|
+
|
|
724
|
+
Nach dem Entsperren kann sich der Benutzer wieder anmelden.
|
|
725
|
+
|
|
726
|
+
### Administratorrechte
|
|
727
|
+
|
|
728
|
+
Der Zugriff auf den Admin-Bereich wird über das Feld `admin` des Authentifizierungsmodells gesteuert.
|
|
729
|
+
|
|
730
|
+
Ein normal registrierter Benutzer startet mit:
|
|
731
|
+
|
|
732
|
+
```text
|
|
733
|
+
admin: false
|
|
734
|
+
blocked: false
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
Ein Administrator kann einem bestehenden Benutzer über die Admin-Benutzerverwaltung Administratorrechte geben.
|
|
738
|
+
|
|
739
|
+
Administratorrechte können dort auch wieder entzogen werden, solange dadurch nicht dem letzten Administrator seine
|
|
740
|
+
Rechte entzogen würden.
|
|
741
|
+
|
|
742
|
+
Der Admin-Generator verwendet dasselbe Authentifizierungsmodell und dasselbe Anmeldesystem wie `b4um:authentication`. Es
|
|
743
|
+
wird weder ein separates Administratorkonto-System noch ein zweiter Login erzeugt.
|
|
744
|
+
|
|
745
|
+
## Gastzugang
|
|
746
|
+
|
|
747
|
+
Füge einem bestehenden b4um-Authentifizierungsmodell einen zeitlich begrenzten Gastzugang hinzu:
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
bin/rails generate b4um:guest MODEL --required=FIELDS
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
Beispiel:
|
|
754
|
+
|
|
755
|
+
```bash
|
|
756
|
+
bin/rails generate b4um:guest User --required=first_name,email
|
|
757
|
+
bin/rails db:migrate
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
Der Guest-Generator baut auf der bestehenden b4um-Authentifizierung auf. Für das ausgewählte Modell muss daher zuerst
|
|
761
|
+
die b4um-Authentifizierung eingerichtet werden.
|
|
762
|
+
|
|
763
|
+
Mit `--required` muss mindestens ein Feld angegeben werden.
|
|
764
|
+
|
|
765
|
+
Eine vollständige Einrichtung kann zum Beispiel so aussehen:
|
|
766
|
+
|
|
767
|
+
```bash
|
|
768
|
+
bin/rails generate b4um:scaffold User first_name:string last_name:string company:string email:string password_digest:string --required=first_name,last_name,email
|
|
769
|
+
bin/rails db:migrate
|
|
770
|
+
|
|
771
|
+
bin/rails generate b4um:authentication User
|
|
772
|
+
|
|
773
|
+
bin/rails generate b4um:guest User --required=first_name,email
|
|
774
|
+
bin/rails db:migrate
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
Der Guest-Generator fügt dem Authentifizierungsmodell zwei Felder hinzu:
|
|
778
|
+
|
|
779
|
+
```text
|
|
780
|
+
guest
|
|
781
|
+
guest_expires_at
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
Gastkonten verwenden dasselbe Authentifizierungsmodell wie regulär registrierte Konten. Der Generator erzeugt kein
|
|
785
|
+
separates Gastmodell.
|
|
786
|
+
|
|
787
|
+
### Felder für Gastkonten
|
|
788
|
+
|
|
789
|
+
Die mit `--required` angegebenen Felder sind beim Erstellen eines Gastkontos Pflichtfelder.
|
|
790
|
+
|
|
791
|
+
Beispiel:
|
|
792
|
+
|
|
793
|
+
```bash
|
|
794
|
+
bin/rails generate b4um:guest User --required=first_name,email
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
In diesem Beispiel sind `first_name` und `email` für Gastkonten erforderlich.
|
|
798
|
+
|
|
799
|
+
Weitere geeignete Felder des Authentifizierungsmodells werden automatisch erkannt und können beim Erstellen des
|
|
800
|
+
Gastkontos ausgefüllt werden. Felder, die nicht mit `--required` angegeben wurden, bleiben optional.
|
|
801
|
+
|
|
802
|
+
Technische und sensible Felder werden nicht als normale Profilfelder für Gastkonten angeboten.
|
|
803
|
+
|
|
804
|
+
Der Guest-Generator passt die normalen Presence-Validierungen des Kontos so an, dass ein Gast mit der kleineren, über
|
|
805
|
+
`--required` festgelegten Feldmenge erstellt werden kann. Bei der Umwandlung in ein reguläres Konto gelten weiterhin die
|
|
806
|
+
normalen Pflichtfelder des Kontos.
|
|
807
|
+
|
|
808
|
+
### Passwörter für Gastkonten
|
|
809
|
+
|
|
810
|
+
Gastkonten verwenden das bestehende `has_secure_password`-Authentifizierungssystem.
|
|
811
|
+
|
|
812
|
+
Für ein Gastkonto wird automatisch ein sicheres internes Passwort erzeugt. Der Gast muss beim Erstellen des Gastzugangs
|
|
813
|
+
kein Passwort auswählen oder eingeben.
|
|
814
|
+
|
|
815
|
+
Wird das Gastkonto später in ein reguläres Konto umgewandelt, muss ein normales Passwort festgelegt werden.
|
|
816
|
+
|
|
817
|
+
### Ablaufzeit
|
|
818
|
+
|
|
819
|
+
Ein Gastzugang läuft automatisch ab.
|
|
820
|
+
|
|
821
|
+
Die Standardlaufzeit beträgt 7 Tage.
|
|
822
|
+
|
|
823
|
+
Mit `--expires-in` kann eine andere Laufzeit festgelegt werden:
|
|
824
|
+
|
|
825
|
+
```bash
|
|
826
|
+
bin/rails generate b4um:guest User --required=first_name,email --expires-in=14
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
In diesem Beispiel erhalten neu erstellte Gastkonten 14 Tage Gastzugang.
|
|
830
|
+
|
|
831
|
+
Der Ablaufzeitpunkt wird gespeichert in:
|
|
832
|
+
|
|
833
|
+
```text
|
|
834
|
+
guest_expires_at
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
Gastbenutzer erhalten vor dem Ablauf ihres Kontos einen Hinweis.
|
|
838
|
+
|
|
839
|
+
### Gastkonto umwandeln
|
|
840
|
+
|
|
841
|
+
Ein Gastkonto kann in ein regulär registriertes Konto umgewandelt werden.
|
|
842
|
+
|
|
843
|
+
Bei der Umwandlung wird der bestehende Datensatz des Authentifizierungsmodells weiterverwendet und kein zweiter Benutzer
|
|
844
|
+
angelegt. Daten, die bereits mit dem Gastkonto verknüpft sind, bleiben dadurch dem umgewandelten Konto zugeordnet.
|
|
845
|
+
|
|
846
|
+
Bei der Umwandlung fragt das generierte Formular die für ein reguläres Konto erforderlichen Felder sowie ein Passwort
|
|
847
|
+
und die Passwortbestätigung ab.
|
|
848
|
+
|
|
849
|
+
Nach erfolgreicher Umwandlung gilt:
|
|
850
|
+
|
|
851
|
+
```text
|
|
852
|
+
guest: false
|
|
853
|
+
guest_expires_at: nil
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
Das Konto verhält sich anschließend wie ein regulär authentifiziertes Konto.
|
|
857
|
+
|
|
858
|
+
### Gastkonto löschen
|
|
859
|
+
|
|
860
|
+
Ein Gast kann das temporäre Konto löschen, anstatt es in ein reguläres Konto umzuwandeln.
|
|
861
|
+
|
|
862
|
+
Abgelaufene Gastkonten können außerdem mit der generierten Cleanup-Task entfernt werden:
|
|
863
|
+
|
|
864
|
+
```bash
|
|
865
|
+
bin/rails b4um:guests:cleanup
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
Diese Task sollte in einer Produktionsumgebung regelmäßig ausgeführt werden, damit abgelaufene Gastkonten nicht
|
|
869
|
+
dauerhaft gespeichert bleiben.
|
|
870
|
+
|
|
871
|
+
Wie die Task zeitgesteuert ausgeführt wird, bleibt bewusst der Anwendung und ihrer jeweiligen Deployment-Umgebung
|
|
872
|
+
überlassen.
|
|
873
|
+
|
|
874
|
+
### Gastzugang und Administration
|
|
875
|
+
|
|
876
|
+
Gastzugang und Admin-Verwaltung verwenden dasselbe Authentifizierungsmodell.
|
|
877
|
+
|
|
878
|
+
Der Guest-Generator kann deshalb zusammen mit `b4um:admin` verwendet werden. Die Gast-spezifische Behandlung der
|
|
879
|
+
Validierungen erhält die Anforderungen für reguläre Konten, sodass bei der Administrator-Erstellung und bei der normalen
|
|
880
|
+
Registrierung weiterhin die entsprechenden Pflichtfelder verlangt werden.
|
|
881
|
+
|
|
548
882
|
## Active Storage und Bilder
|
|
549
883
|
|
|
550
884
|
Bildanhänge verwenden Rails Active Storage.
|
|
@@ -732,6 +1066,86 @@ Die Suche bietet:
|
|
|
732
1066
|
- Kein zusätzliches Such-Gem erforderlich
|
|
733
1067
|
- Sichere wiederholte Ausführung des Generators
|
|
734
1068
|
|
|
1069
|
+
## Sortable
|
|
1070
|
+
|
|
1071
|
+
Füge einer bestehenden Ressource eine dauerhaft gespeicherte Sortierreihenfolge hinzu:
|
|
1072
|
+
|
|
1073
|
+
```bash
|
|
1074
|
+
bin/rails generate b4um:sortable Product
|
|
1075
|
+
bin/rails db:migrate
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
Der Generator fügt eine `position`-Spalte hinzu und weist bestehenden Datensätzen beim Ausführen der generierten
|
|
1079
|
+
Migration automatisch Positionen zu.
|
|
1080
|
+
|
|
1081
|
+
Neue Datensätze werden automatisch am Ende der Liste eingefügt.
|
|
1082
|
+
|
|
1083
|
+
Standardmäßig wird die bestehende Index-Seite zur sortierbaren Seite:
|
|
1084
|
+
|
|
1085
|
+
```text
|
|
1086
|
+
/products
|
|
1087
|
+
```
|
|
1088
|
+
|
|
1089
|
+
Das bestehende Index-Layout wird auf das b4um-Sortable-Layout umgestellt. Die gespeicherte Position wird außerdem als
|
|
1090
|
+
Standardsortierung der Ressource verwendet.
|
|
1091
|
+
|
|
1092
|
+
Sortable bietet:
|
|
1093
|
+
|
|
1094
|
+
- Dauerhaft in der Datenbank gespeicherte ganzzahlige Positionen
|
|
1095
|
+
- Automatische Positionierung bestehender Datensätze während der Migration
|
|
1096
|
+
- Automatische Positionierung neuer Datensätze am Ende
|
|
1097
|
+
- Drag-and-Drop-Sortierung mit Stimulus
|
|
1098
|
+
- Direkte Änderung der Position über ein Zahlenfeld
|
|
1099
|
+
- Automatisches Verschieben der betroffenen Datensätze
|
|
1100
|
+
- Lückenlose Positionen nach dem Verschieben oder Löschen von Datensätzen
|
|
1101
|
+
- Serverseitige Sortierung innerhalb einer Datenbanktransaktion
|
|
1102
|
+
- CSRF-geschützte Update-Anfragen
|
|
1103
|
+
- Integration mit b4um Search und Pagination
|
|
1104
|
+
- Kein zusätzliches Sortier-Gem erforderlich
|
|
1105
|
+
- Sichere wiederholte Ausführung des Generators
|
|
1106
|
+
|
|
1107
|
+
### Separate Sortierseite
|
|
1108
|
+
|
|
1109
|
+
Mit `--path` kann eine separate Sortierseite erstellt werden:
|
|
1110
|
+
|
|
1111
|
+
```bash
|
|
1112
|
+
bin/rails generate b4um:sortable Product --path=sortierung
|
|
1113
|
+
bin/rails db:migrate
|
|
1114
|
+
```
|
|
1115
|
+
|
|
1116
|
+
Dadurch wird die sortierbare Seite genau unter folgender URL erstellt:
|
|
1117
|
+
|
|
1118
|
+
```text
|
|
1119
|
+
/sortierung
|
|
1120
|
+
```
|
|
1121
|
+
|
|
1122
|
+
während der normale Ressourcen-Index weiterhin unter
|
|
1123
|
+
|
|
1124
|
+
```text
|
|
1125
|
+
/products
|
|
1126
|
+
```
|
|
1127
|
+
|
|
1128
|
+
verfügbar bleibt.
|
|
1129
|
+
|
|
1130
|
+
Das bestehende Index-Layout, beispielsweise Bento oder Table, bleibt unverändert. Es verwendet weiterhin die
|
|
1131
|
+
gespeicherte `position`-Sortierung.
|
|
1132
|
+
|
|
1133
|
+
Die separate Sortierseite verwendet den bestehenden Controller der Ressource. Es wird kein zusätzlicher Controller und
|
|
1134
|
+
kein Namespace erzeugt.
|
|
1135
|
+
|
|
1136
|
+
Der mit `--path` angegebene Wert bestimmt direkt die URL der separaten Sortierseite. Zum Beispiel:
|
|
1137
|
+
|
|
1138
|
+
```bash
|
|
1139
|
+
bin/rails generate b4um:sortable Product --path=produktuebersicht
|
|
1140
|
+
bin/rails generate b4um:sortable Product --path=verwaltung
|
|
1141
|
+
bin/rails generate b4um:sortable Product --path=admin
|
|
1142
|
+
```
|
|
1143
|
+
|
|
1144
|
+
Dadurch entstehen entsprechend `/produktuebersicht`, `/verwaltung` und `/admin`.
|
|
1145
|
+
|
|
1146
|
+
Eine separate Sortierseite ermöglicht außerdem, nur die `sort`-Action durch die Authentifizierung zu schützen, während
|
|
1147
|
+
der normale Ressourcen-Index öffentlich bleiben kann.
|
|
1148
|
+
|
|
735
1149
|
## Kommentare
|
|
736
1150
|
|
|
737
1151
|
Füge einem bestehenden Modell polymorphe Kommentare hinzu:
|
|
@@ -1135,7 +1549,7 @@ wird.
|
|
|
1135
1549
|
|
|
1136
1550
|
## Version
|
|
1137
1551
|
|
|
1138
|
-
Aktuelle Version: `0.
|
|
1552
|
+
Aktuelle Version: `0.4.0`
|
|
1139
1553
|
|
|
1140
1554
|
## Autor
|
|
1141
1555
|
|