Skip to content

Commit 3743757

Browse files
cleanup
1 parent 9766993 commit 3743757

10 files changed

Lines changed: 542 additions & 42 deletions

File tree

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ php please starter-kit:install mindtwo/statamic-base
1616

1717
### Backend Features
1818
- **Dashboard Widgets**: Customized dashboard with helpful widgets
19-
- **Commands**: Useful Artisan commands for development
20-
- **Base Components**: Reusable PHP classes and utilities
2119

2220
### Frontend Stack
2321
- **Tailwind CSS 4** with @tailwindcss/forms and @tailwindcss/typography
@@ -53,7 +51,7 @@ The starter kit includes:
5351

5452
### Database-First Architecture
5553

56-
This starter kit is prepared to use Statamic's **Eloquent Driver** for database storage instead of the traditional flat-file approach. While database usage is optional, it provides better performance, easier backups, and improved scalability for production environments when enabled.
54+
This starter kit is prepared to use Statamic's **[Eloquent Driver](https://github.com/statamic/eloquent-driver)** for database storage instead of the traditional flat-file approach. While database usage is optional, it provides better performance, easier backups, and improved scalability for production environments when enabled.
5755

5856
**Stored in Database:**
5957
- Collection entries (pages, articles, etc.)
@@ -62,9 +60,9 @@ This starter kit is prepared to use Statamic's **Eloquent Driver** for database
6260
- Global content
6361
- Navigation trees
6462
- Taxonomy terms
63+
- User accounts and roles
6564

6665
**Stored as Files:**
67-
- User accounts and permissions
6866
- Content blueprints and fieldsets
6967
- Site configuration files
7068
- Templates and views
@@ -84,7 +82,7 @@ This starter kit is prepared to use Statamic's **Eloquent Driver** for database
8482

8583
### 1. Database Configuration (Optional but Recommended)
8684

87-
This starter kit supports **Eloquent Driver** for database storage instead of flat files. For optimal performance, configure your database:
85+
This starter kit supports **[Eloquent Driver](https://github.com/statamic/eloquent-driver)** for database storage instead of flat files. For optimal performance, configure your database:
8886

8987
```bash
9088
# Copy environment file
@@ -120,6 +118,18 @@ php artisan migrate
120118
php artisan statamic:eloquent:import-all
121119
```
122120

121+
### 2.1. User Database Storage (Optional)
122+
123+
To store users in the database instead of files, follow the [Statamic guide for storing users in a database](https://statamic.dev/tips/storing-users-in-a-database). The necessary configuration files are already included in the `export/` directory.
124+
125+
```bash
126+
# Additional migration for user storage
127+
php artisan migrate
128+
129+
# Import user configuration
130+
# Files in export/ directory will be automatically processed
131+
```
132+
123133
### 3. Frontend Setup
124134

125135
```bash

export/app/Models/User.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
// use Illuminate\Contracts\Auth\MustVerifyEmail;
6+
use Illuminate\Database\Eloquent\Factories\HasFactory;
7+
use Illuminate\Foundation\Auth\User as Authenticatable;
8+
use Illuminate\Notifications\Notifiable;
9+
10+
class User extends Authenticatable
11+
{
12+
/** @use HasFactory<\Database\Factories\UserFactory> */
13+
use HasFactory, Notifiable;
14+
15+
/**
16+
* The attributes that are mass assignable.
17+
*
18+
* @var list<string>
19+
*/
20+
protected $fillable = [
21+
'name',
22+
'email',
23+
'password',
24+
];
25+
26+
/**
27+
* The attributes that should be hidden for serialization.
28+
*
29+
* @var list<string>
30+
*/
31+
protected $hidden = [
32+
'password',
33+
'remember_token',
34+
];
35+
36+
/**
37+
* Get the attributes that should be cast.
38+
*
39+
* @return array<string, string>
40+
*/
41+
protected function casts(): array
42+
{
43+
return [
44+
'email_verified_at' => 'datetime',
45+
'password' => 'hashed',
46+
'preferences' => 'json',
47+
];
48+
}
49+
}

export/config/auth.php

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
<?php
2+
3+
return [
4+
5+
/*
6+
|--------------------------------------------------------------------------
7+
| Authentication Defaults
8+
|--------------------------------------------------------------------------
9+
|
10+
| This option defines the default authentication "guard" and password
11+
| reset "broker" for your application. You may change these values
12+
| as required, but they're a perfect start for most applications.
13+
|
14+
*/
15+
16+
'defaults' => [
17+
'guard' => env('AUTH_GUARD', 'web'),
18+
'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
19+
],
20+
21+
/*
22+
|--------------------------------------------------------------------------
23+
| Authentication Guards
24+
|--------------------------------------------------------------------------
25+
|
26+
| Next, you may define every authentication guard for your application.
27+
| Of course, a great default configuration has been defined for you
28+
| which utilizes session storage plus the Eloquent user provider.
29+
|
30+
| All authentication guards have a user provider, which defines how the
31+
| users are actually retrieved out of your database or other storage
32+
| system used by the application. Typically, Eloquent is utilized.
33+
|
34+
| Supported: "session"
35+
|
36+
*/
37+
38+
'guards' => [
39+
'web' => [
40+
'driver' => 'session',
41+
'provider' => 'users',
42+
],
43+
],
44+
45+
/*
46+
|--------------------------------------------------------------------------
47+
| User Providers
48+
|--------------------------------------------------------------------------
49+
|
50+
| All authentication guards have a user provider, which defines how the
51+
| users are actually retrieved out of your database or other storage
52+
| system used by the application. Typically, Eloquent is utilized.
53+
|
54+
| If you have multiple user tables or models you may configure multiple
55+
| providers to represent the model / table. These providers may then
56+
| be assigned to any extra authentication guards you have defined.
57+
|
58+
| Supported: "statamic", "database", "eloquent"
59+
|
60+
*/
61+
62+
'providers' => [
63+
// 'users' => [
64+
// 'driver' => 'statamic',
65+
// ],
66+
67+
'users' => [
68+
'driver' => 'eloquent',
69+
'model' => env('AUTH_MODEL', App\Models\User::class),
70+
],
71+
72+
// 'users' => [
73+
// 'driver' => 'database',
74+
// 'table' => 'users',
75+
// ],
76+
],
77+
78+
/*
79+
|--------------------------------------------------------------------------
80+
| Resetting Passwords
81+
|--------------------------------------------------------------------------
82+
|
83+
| These configuration options specify the behavior of Laravel's password
84+
| reset functionality, including the table utilized for token storage
85+
| and the user provider that is invoked to actually retrieve users.
86+
|
87+
| The expiry time is the number of minutes that each reset token will be
88+
| considered valid. This security feature keeps tokens short-lived so
89+
| they have less time to be guessed. You may change this as needed.
90+
|
91+
| The throttle setting is the number of seconds a user must wait before
92+
| generating more password reset tokens. This prevents the user from
93+
| quickly generating a very large amount of password reset tokens.
94+
|
95+
*/
96+
97+
'passwords' => [
98+
'users' => [
99+
'provider' => 'users',
100+
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
101+
'expire' => 60,
102+
'throttle' => 60,
103+
],
104+
105+
'activations' => [
106+
'provider' => 'users',
107+
'table' => env('AUTH_ACTIVATION_TOKEN_TABLE', 'password_activation_tokens'),
108+
'expire' => 4320,
109+
'throttle' => 60,
110+
],
111+
],
112+
113+
/*
114+
|--------------------------------------------------------------------------
115+
| Password Confirmation Timeout
116+
|--------------------------------------------------------------------------
117+
|
118+
| Here you may define the number of seconds before a password confirmation
119+
| window expires and users are asked to re-enter their password via the
120+
| confirmation screen. By default, the timeout lasts for three hours.
121+
|
122+
*/
123+
124+
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),
125+
126+
];

0 commit comments

Comments
 (0)