Skip to content

Commit c402961

Browse files
authored
Merge pull request #18147 from craftcms/feature/login-as-element
[6.x] Authentication with Element instead of Eloquent Model
2 parents ac26e83 + 12637c0 commit c402961

File tree

92 files changed

+466
-280
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+466
-280
lines changed

routes/actions.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
Route::prefix(Cms::config()->actionTrigger)->group(function () {
7272
Route::post('migrate', MigrateController::class);
7373

74-
Route::middleware(['auth'])->group(function () {
74+
Route::middleware(['auth:craft'])->group(function () {
7575
Route::post('entries/save-entry', StoreEntryController::class);
7676
});
7777

@@ -115,7 +115,7 @@
115115
/**
116116
* Actions needing auth
117117
*/
118-
Route::middleware(['auth'])->group(function () {
118+
Route::middleware(['auth:craft'])->group(function () {
119119
// Addresses
120120
Route::post('addresses/fields', [AddressesController::class, 'fields']);
121121
Route::middleware(RequireAdminChanges::class)->post('addresses/save-field-layout', [AddressesController::class, 'saveFieldLayout']);

routes/cp.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
/**
3737
* Admin requests that require a login
3838
*/
39-
Route::middleware('auth')->group(function () {
39+
Route::middleware('auth:craft')->group(function () {
4040
Route::get('dashboard', DashboardController::class);
4141

4242
Route::get('utilities', [UtilitiesController::class, 'index']);

src/Config/ConstAdapter.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace CraftCms\Cms\Config;
66

77
use Dotenv\Repository\Adapter\AdapterInterface;
8+
use Override;
89
use PhpOption\Option;
910
use PhpOption\Some;
1011

@@ -22,8 +23,8 @@ private function __construct() {}
2223
*
2324
* @return Option<AdapterInterface>
2425
*/
25-
#[\Override]
26-
public static function create()
26+
#[Override]
27+
public static function create(): Option
2728
{
2829
/** @var Option<AdapterInterface> */
2930
return Some::create(new self);
@@ -35,8 +36,8 @@ public static function create()
3536
* @param non-empty-string $name
3637
* @return Option<string>
3738
*/
38-
#[\Override]
39-
public function read(string $name)
39+
#[Override]
40+
public function read(string $name): Option
4041
{
4142
return Option::fromValue(defined($name) ? constant($name) : null);
4243
}
@@ -45,10 +46,9 @@ public function read(string $name)
4546
* Write to an environment variable, if possible.
4647
*
4748
* @param non-empty-string $name
48-
* @return bool
4949
*/
50-
#[\Override]
51-
public function write(string $name, string $value)
50+
#[Override]
51+
public function write(string $name, string $value): bool
5252
{
5353
define($name, $value);
5454

@@ -59,10 +59,9 @@ public function write(string $name, string $value)
5959
* Delete an environment variable, if possible.
6060
*
6161
* @param non-empty-string $name
62-
* @return bool
6362
*/
64-
#[\Override]
65-
public function delete(string $name)
63+
#[Override]
64+
public function delete(string $name): bool
6665
{
6766
return false;
6867
}

src/Dashboard/Dashboard.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ public function changeWidgetColspan(int $widgetId, int $colspan): bool
296296
*/
297297
private function addDefaultUserWidgets(): void
298298
{
299-
/** @var User $user */
299+
/** @var ?\craft\elements\User $user */
300300
$user = Auth::user();
301301

302302
// Recent Entries widget
@@ -321,9 +321,11 @@ private function addDefaultUserWidgets(): void
321321
],
322322
]));
323323

324-
$user->update([
324+
User::where('id', $user->id)->update([
325325
'hasDashboard' => true,
326326
]);
327+
328+
$user->hasDashboard = true;
327329
}
328330

329331
private function getUserWidgetModelById(?int $widgetId = null): Models\Widget

src/Database/Migrations/0000_00_00_000001_add_remember_token_to_users.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@
1111
{
1212
public function up(): void
1313
{
14-
if (Schema::hasColumn(Table::USERS, 'remember_token')) {
14+
if (Schema::hasColumn(Table::USERS, 'rememberToken')) {
1515
return;
1616
}
1717

1818
Schema::table(Table::USERS, function (Blueprint $table) {
19-
$table->rememberToken();
19+
$table->string('rememberToken', 100)->nullable();
2020
});
2121
}
2222

2323
public function down(): void
2424
{
25-
Schema::dropColumns(Table::USERS, 'remember_token');
25+
Schema::dropColumns(Table::USERS, 'rememberToken');
2626
}
2727
};

src/Database/Migrations/Install.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use CraftCms\Cms\Support\Facades\Sites;
3434
use CraftCms\Cms\Support\Str;
3535
use Illuminate\Database\Schema\Blueprint;
36+
use Illuminate\Support\Facades\Auth;
3637
use Illuminate\Support\Facades\DB;
3738
use Illuminate\Support\Facades\Event;
3839
use Illuminate\Support\Facades\Schema;
@@ -74,6 +75,7 @@ public function up(): void
7475
$this->insertDefaultData();
7576
} catch (Throwable $e) {
7677
$this->components->error("Error inserting default data: {$e->getMessage()}");
78+
$this->getOutput()->info($e->getTraceAsString());
7779
}
7880
});
7981

@@ -774,7 +776,7 @@ public function createTables(): void
774776
$table->string('unverifiedEmail')->nullable();
775777
$table->boolean('passwordResetRequired')->default(false);
776778
$table->dateTime('lastPasswordChangeDate')->nullable();
777-
$table->rememberToken();
779+
$table->string('rememberToken', 100)->nullable();
778780
$table->dateTime('dateCreated');
779781
$table->dateTime('dateUpdated');
780782

@@ -1130,8 +1132,8 @@ public function insertDefaultData(): void
11301132
'language' => $this->site->getLanguage(),
11311133
]);
11321134

1133-
if (! Craft::$app->getRequest()->getIsConsoleRequest()) {
1134-
Craft::$app->getUser()->login($user, Cms::config()->userSessionDuration);
1135+
if (! app()->runningInConsole()) {
1136+
Auth::guard('craft')->loginUsingId($user->id);
11351137
}
11361138
});
11371139
}

src/Database/Queries/Concerns/QueriesDraftsAndRevisions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use CraftCms\Cms\Database\Queries\ElementQuery;
99
use CraftCms\Cms\Database\Table;
1010
use CraftCms\Cms\Support\Arr;
11-
use CraftCms\Cms\User\Models\User;
11+
use CraftCms\Cms\User\Elements\User;
1212
use Illuminate\Database\Query\Builder;
1313
use Illuminate\Support\Collection;
1414
use InvalidArgumentException;

src/Database/Queries/UserQuery.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public function __construct(array $config = [])
5959
'users.affiliatedSiteId as affiliatedSiteId',
6060
'users.active as active',
6161
'users.fullName as fullName',
62+
'users.rememberToken as rememberToken',
6263
]);
6364
}
6465

src/Edition.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use CraftCms\Cms\Edition\Events\EditionChanged;
88
use CraftCms\Cms\Edition\Exceptions\WrongEditionException;
99
use CraftCms\Cms\License\License;
10+
use CraftCms\Cms\Shared\Models\Info;
1011
use CraftCms\Cms\Support\Env;
1112
use CraftCms\Cms\Support\Facades\ProjectConfig;
1213
use Illuminate\Support\Facades\Auth;
@@ -125,7 +126,7 @@ public static function canTest(): bool
125126

126127
public static function canUpgrade(): bool
127128
{
128-
if (! Auth::getUser()?->isAdmin()) {
129+
if (! Auth::user()?->isAdmin()) {
129130
return false;
130131
}
131132

@@ -146,7 +147,7 @@ public static function require(Edition|int $edition, bool $orBetter = true): voi
146147
$edition = self::from($edition);
147148
}
148149

149-
if (! \Craft::$app->getIsInstalled()) {
150+
if (! Info::isInstalled()) {
150151
return;
151152
}
152153

src/Element/Concerns/Draftable.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
namespace CraftCms\Cms\Element\Concerns;
66

7+
use Craft;
78
use craft\elements\User as UserElement;
89
use CraftCms\Cms\Database\Table;
910
use CraftCms\Cms\Element\Events\AuthorizeCreateDrafts;
10-
use CraftCms\Cms\User\Models\User;
1111
use Illuminate\Support\Facades\DB;
1212
use Illuminate\Support\Facades\Event;
1313

@@ -127,7 +127,7 @@ public function handleDraftDelete(): void
127127
/**
128128
* {@inheritdoc}
129129
*/
130-
public function canCreateDrafts(User $user): bool
130+
public function canCreateDrafts(UserElement $user): bool
131131
{
132132
if (Event::hasListeners(AuthorizeCreateDrafts::class)) {
133133
Event::dispatch($event = new AuthorizeCreateDrafts($this, $user));
@@ -144,7 +144,7 @@ public function canCreateDrafts(User $user): bool
144144
public function canDuplicateAsDraft(UserElement $user): bool
145145
{
146146
// if anything, this will be more lenient than canDuplicate()
147-
return \Craft::$app->getElements()->canDuplicate($this, $user);
147+
return Craft::$app->getElements()->canDuplicate($this, $user);
148148
}
149149

150150
/**

0 commit comments

Comments
 (0)