This commit is contained in:
Čarodej
2022-01-10 08:31:44 +01:00
parent 8a64fe070b
commit ead4f65e1a
23 changed files with 413 additions and 1176 deletions
@@ -1,5 +1,4 @@
<?php
namespace App\Socialite\Controllers;
use App\Users\Models\User;
@@ -20,32 +19,33 @@ class SocialiteCallbackController extends Controller
public function __invoke($provider)
{
// Get socialite user
if (app()->runningInConsole()) {
if (app()->runningUnitTests()) {
$provider_user = Socialite::driver($provider)->user();
} else {
$provider_user = Socialite::driver($provider)->stateless()->user();
}
// Check if user exist already
$user = User::whereEmail($provider_user->email)->first();
$user = User::where('email', $provider_user->email)->first();
if($user) {
// Login User
// Login User
if ($user) {
$this->guard->login($user);
} else {
$data = CreateUserData::fromArray([
'name' => $provider_user->getname(),
'email' => $provider_user->getEmail(),
'avatar' => store_socialite_avatar($provider_user->getAvatar()),
'oauth_provider' => $provider,
]);
// Create User
($this->createNewUser)($data);
return response('User logged in', 201);
}
return response('Loged in', 200);
// Create data user data object
$data = CreateUserData::fromArray([
'name' => $provider_user->name,
'email' => $provider_user->email,
'avatar' => store_socialite_avatar($provider_user->avatar),
'oauth_provider' => $provider,
]);
// Create User
($this->createNewUser)($data);
return response('User registered', 201);
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Socialite\Controllers;
use App\Http\Controllers\Controller;
@@ -12,7 +11,7 @@ class SocialiteRedirectController extends Controller
$url = Socialite::driver($provider)->stateless()->redirect()->getTargetUrl();
return response()->json([
'url' => $url
'url' => $url,
]);
}
}
+6 -17
View File
@@ -2,13 +2,9 @@
namespace App\Users\Actions;
use App\Users\Models\User;
use Illuminate\Http\Response;
use App\Users\Models\UserSettings;
use App\Http\Controllers\Controller;
use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
class CreateNewUserAction extends Controller
{
@@ -23,11 +19,9 @@ class CreateNewUserAction extends Controller
public function __invoke($data)
{
$settings = get_settings([
'storage_default', 'registration', 'user_verification',
'registration', 'user_verification',
]);
$is_socialite = is_null($data->password);
// Check if account registration is enabled
if (! intval($settings['registration'])) {
abort(401);
@@ -35,32 +29,27 @@ class CreateNewUserAction extends Controller
// Create user
$user = User::create([
'password' => $is_socialite ? null : bcrypt($data->password),
'password' => $data->password ? bcrypt($data->password) : null,
'oauth_provider' => $data->oauth_provider,
'email' => $data->email,
]);
UserSettings::unguard();
$user
->settings()
->create([
'name' => $data->name,
'storage_capacity' => $settings['storage_default'],
'avatar' => $data->avatar,
'name' => $data->name,
'avatar' => $data->avatar,
]);
UserSettings::reguard();
// Mark as verified if verification is disabled
if ($is_socialite || ! intval($settings['user_verification'])) {
if (! $data->password || ! intval($settings['user_verification'])) {
$user->markEmailAsVerified();
}
event(new Registered($user));
// Log in if verification is disabled
if ($is_socialite || ! intval($settings['user_verification'])) {
if (! $data->password || ! intval($settings['user_verification'])) {
$this->guard->login($user);
}
}
@@ -1,22 +0,0 @@
<?php
namespace App\Users\Controllers\Authentication;
use App\Users\DTO\CreateUserData;
use App\Http\Controllers\Controller;
use App\Users\Actions\CreateNewUserAction;
use App\Users\Requests\RegisterUserRequest;
class RegisterAuthenticationController extends Controller
{
public function __construct(
public CreateNewUserAction $createNewUser,
) {
}
public function __invoke(RegisterUserRequest $request)
{
$data = CreateUserData::fromRequest($request);
($this->createNewUser)($data);
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Users\Controllers\Authentication;
use App\Users\DTO\CreateUserData;
use App\Http\Controllers\Controller;
use App\Users\Actions\CreateNewUserAction;
use App\Users\Requests\RegisterUserRequest;
class RegisterUserController extends Controller
{
public function __construct(
public CreateNewUserAction $createNewUser,
) {
}
public function __invoke(RegisterUserRequest $request)
{
// Map registration data
$data = CreateUserData::fromRequest($request);
// Register user
($this->createNewUser)($data);
return response('User successfully registered.', 201);
}
}
+6 -7
View File
@@ -1,16 +1,15 @@
<?php
namespace App\Users\DTO;
use Spatie\DataTransferObject\DataTransferObject;
class CreateUserData extends DataTransferObject
{
public $name;
public $email;
public $password;
public $oauth_provider;
public $avatar;
public string $name;
public string $email;
public ?string $password;
public ?string $oauth_provider;
public ?string $avatar;
public static function fromRequest($request): self
{
@@ -33,4 +32,4 @@ class CreateUserData extends DataTransferObject
'oauth_provider' => $array['oauth_provider'],
]);
}
}
}
+1 -1
View File
@@ -14,10 +14,10 @@ use Domain\Settings\Models\Setting;
use Kyslik\ColumnSortable\Sortable;
use Illuminate\Support\Facades\Storage;
use Illuminate\Notifications\Notifiable;
use App\Users\Restrictions\RestrictionsManager;
use App\Users\Notifications\ResetPassword;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Users\Restrictions\RestrictionsManager;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -3,7 +3,6 @@ namespace App\Users\Restrictions\Engines;
use App\Users\Models\User;
use App\Users\Restrictions\RestrictionsEngine;
use Domain\Teams\Actions\CheckMaxTeamMembersLimitAction;
class DefaultRestrictionsEngine implements RestrictionsEngine
{
@@ -2,10 +2,10 @@
namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Folders\Resources\FolderResource;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderResource;
use Domain\Folders\Resources\FolderCollection;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
@@ -1,11 +1,10 @@
<?php
namespace Domain\Settings\Controllers;
use Domain\Settings\Requests\StorePaymentServiceCredentialsRequest;
use Domain\Settings\Models\Setting;
use Illuminate\Http\Response;
use Artisan;
use Illuminate\Http\Response;
use Domain\Settings\Models\Setting;
use Domain\Settings\Requests\StorePaymentServiceCredentialsRequest;
class StorePaymentServiceCredentialsController
{
@@ -34,14 +33,14 @@ class StorePaymentServiceCredentialsController
// Get options
collect([$options[$request->input('service')]])
->each(fn($setting) => Setting::updateOrCreate([
->each(fn ($setting) => Setting::updateOrCreate([
'name' => $setting['name'],
], [
'value' => $setting['value'],
]));
// Get and store credentials
if (!app()->runningUnitTests()) {
if (! app()->runningUnitTests()) {
$credentials = [
'stripe' => [
'STRIPE_PUBLIC_KEY' => $request->input('key'),
@@ -1,5 +1,4 @@
<?php
namespace Domain\Settings\Requests;
use Illuminate\Foundation\Http\FormRequest;
@@ -1,11 +1,11 @@
<?php
namespace Domain\Sharing\Controllers;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
use Domain\Files\Models\File;
use Domain\Sharing\Models\Share;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Storage;
use Domain\Traffic\Actions\RecordDownloadAction;
use Symfony\Component\HttpFoundation\StreamedResponse;
@@ -17,7 +17,8 @@ class SharePublicIndexController extends Controller
*/
public function __construct(
public RecordDownloadAction $recordDownload,
) {}
) {
}
public function __invoke(
Share $share,
@@ -1,11 +1,11 @@
<?php
namespace Domain\Sharing\Controllers;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Domain\Sharing\Models\Share;
use Illuminate\Contracts\View\View;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\Foundation\Application;
class WebCrawlerOpenGraphController extends Controller
{
@@ -14,8 +14,7 @@ class WebCrawlerOpenGraphController extends Controller
*/
public function __invoke(
Share $share
): Application|Factory|View
{
): Application|Factory|View {
$namespace = match ($share->type) {
'folder' => 'Domain\\Folders\\Models\\Folder',
'file' => 'Domain\\Files\\Models\\File',
+27 -29
View File
@@ -3,13 +3,13 @@
use Carbon\Carbon;
use ByteUnits\Metric;
use App\Users\Models\User;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
use Domain\Files\Models\File;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Collection;
use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\Http;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Storage;
@@ -1016,45 +1016,43 @@ if (! function_exists('replace_occurrence')) {
);
}
if(! function_exists('get_socialite_avatar')) {
/**
* Get socialite avatar create and store his thumbnails
*/
function store_socialite_avatar($avatar)
{
// Get image from external source
$image = Http::get($avatar)->body();
if (! function_exists('get_socialite_avatar')) {
/**
* Get socialite avatar create and store his thumbnails
*/
function store_socialite_avatar($avatar)
{
// Get image from external source
$image = Http::get($avatar)->body();
// Generate avatar name
$avatar_name = Str::uuid() . '.jpg';
// Generate avatar name
$avatar_name = Str::uuid() . '.jpg';
// Create intervention image
$intervention = Image::make($image);
// Create intervention image
$intervention = Image::make($image);
// Generate avatar sizes
generate_avatar_thumbnails($intervention, $avatar_name);
// Generate avatar sizes
generate_avatar_thumbnails($intervention, $avatar_name);
// Return name of image
return $avatar_name;
// Return name of image
return $avatar_name;
}
}
}
if(! function_exists('generate_avatar_thumbnails')) {
/**
* Create avatar thumbnails
*/
function generate_avatar_thumbnails($intervention, $avatar_name)
{
collect(config('vuefilemanager.avatar_sizes'))
->each(function ($size) use ($intervention, $avatar_name) {
if (! function_exists('generate_avatar_thumbnails')) {
/**
* Create avatar thumbnails
*/
function generate_avatar_thumbnails($intervention, $avatar_name)
{
collect(config('vuefilemanager.avatar_sizes'))
->each(function ($size) use ($intervention, $avatar_name) {
// fit thumbnail
$intervention->fit($size['size'], $size['size'])->stream();
// Store thumbnail to disk
Storage::put("avatars/{$size['name']}-{$avatar_name}", $intervention);
});
}
}
}
}