primo upload

This commit is contained in:
claus75a
2024-03-16 20:37:32 +01:00
commit e43b9b4b28
3019 changed files with 406000 additions and 0 deletions
@@ -0,0 +1,32 @@
<?php
namespace Vanguard\Http\Controllers\Api\Profile;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\User\UpdateProfileLoginDetailsRequest;
use Vanguard\Http\Resources\UserResource;
use Vanguard\Repositories\User\UserRepository;
/**
* @package Vanguard\Http\Controllers\Api\Profile
*/
class AuthDetailsController extends ApiController
{
/**
* Updates user profile details.
*
* @param UpdateProfileLoginDetailsRequest $request
* @param UserRepository $users
* @return UserResource
*/
public function update(UpdateProfileLoginDetailsRequest $request, UserRepository $users)
{
$user = $request->user();
$data = $request->only(['email', 'username', 'password']);
$user = $users->update($user->id, $data);
return new UserResource($user);
}
}
@@ -0,0 +1,86 @@
<?php
namespace Vanguard\Http\Controllers\Api\Profile;
use Illuminate\Http\Request;
use Vanguard\Events\User\ChangedAvatar;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\User\UploadAvatarRawRequest;
use Vanguard\Http\Resources\UserResource;
use Vanguard\Repositories\User\UserRepository;
use Vanguard\Services\Upload\UserAvatarManager;
/**
* @package Vanguard\Http\Controllers\Api\Profile
*/
class AvatarController extends ApiController
{
public function __construct(private UserRepository $users, private UserAvatarManager $avatarManager)
{
}
/**
* @param UploadAvatarRawRequest $request
* @return UserResource
*/
public function update(UploadAvatarRawRequest $request)
{
$name = $this->avatarManager->uploadAndCropAvatar(
$request->file('file')
);
$user = $this->users->update(
auth()->id(),
['avatar' => $name]
);
event(new ChangedAvatar);
return new UserResource($user);
}
/**
* @param Request $request
* @return UserResource
* @throws \Illuminate\Validation\ValidationException
*/
public function updateExternal(Request $request)
{
$this->validate($request, [
'url' => 'required|url'
]);
$this->avatarManager->deleteAvatarIfUploaded(
auth()->user()
);
$user = $this->users->update(
auth()->id(),
['avatar' => $request->url]
);
event(new ChangedAvatar);
return new UserResource($user);
}
/**
* Remove avatar for currently authenticated user and set it to null.
* @return UserResource
*/
public function destroy()
{
$user = auth()->user();
$this->avatarManager->deleteAvatarIfUploaded($user);
$user = $this->users->update(
$user->id,
['avatar' => null]
);
event(new ChangedAvatar);
return new UserResource($user);
}
}
@@ -0,0 +1,52 @@
<?php
namespace Vanguard\Http\Controllers\Api\Profile;
use Vanguard\Events\User\UpdatedProfileDetails;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\User\UpdateProfileDetailsRequest;
use Vanguard\Http\Resources\UserResource;
use Vanguard\Repositories\User\UserRepository;
/**
* @package Vanguard\Http\Controllers\Api\Profile
*/
class DetailsController extends ApiController
{
/**
* Handle user details request.
* @return UserResource
*/
public function index()
{
return new UserResource(auth()->user());
}
/**
* Updates user profile details.
* @param UpdateProfileDetailsRequest $request
* @param UserRepository $users
* @return UserResource
*/
public function update(UpdateProfileDetailsRequest $request, UserRepository $users)
{
$user = $request->user();
$data = collect($request->all());
$data = $data->only([
'first_name', 'last_name', 'birthday',
'phone', 'address', 'country_id'
])->toArray();
if (! isset($data['country_id'])) {
$data['country_id'] = $user->country_id;
}
$user = $users->update($user->id, $data);
event(new UpdatedProfileDetails);
return new UserResource($user);
}
}
@@ -0,0 +1,31 @@
<?php
namespace Vanguard\Http\Controllers\Api\Profile;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Resources\SessionResource;
use Vanguard\Repositories\Session\SessionRepository;
/**
* @package Vanguard\Http\Controllers\Api\Profile
*/
class SessionsController extends ApiController
{
public function __construct()
{
$this->middleware('auth');
$this->middleware('session.database');
}
/**
* Handle user details request.
* @param SessionRepository $sessions
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(SessionRepository $sessions)
{
$sessions = $sessions->getUserSessions(auth()->id());
return SessionResource::collection($sessions);
}
}
@@ -0,0 +1,96 @@
<?php
namespace Vanguard\Http\Controllers\Api\Profile;
use Authy;
use Vanguard\Events\User\TwoFactorDisabled;
use Vanguard\Events\User\TwoFactorEnabled;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\TwoFactor\EnableTwoFactorRequest;
use Vanguard\Http\Requests\TwoFactor\VerifyTwoFactorTokenRequest;
use Vanguard\Http\Resources\UserResource;
/**
* @package Vanguard\Http\Controllers\Api\Profile
*/
class TwoFactorController extends ApiController
{
/**
* Enable 2FA for specified user.
* @param EnableTwoFactorRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function update(EnableTwoFactorRequest $request)
{
$user = auth()->user();
if (Authy::isEnabled($user)) {
return $this->setStatusCode(422)
->respondWithError("2FA is already enabled for this user.");
}
$user->setAuthPhoneInformation(
$request->country_code,
$request->phone_number
);
Authy::register($user);
$user->save();
Authy::sendTwoFactorVerificationToken($user);
return $this->respondWithArray([
'message' => 'Verification token sent.'
]);
}
/**
* Verify provided 2FA token.
*
* @param VerifyTwoFactorTokenRequest $request
* @return \Illuminate\Http\JsonResponse|UserResource
*/
public function verify(VerifyTwoFactorTokenRequest $request)
{
$user = auth()->user();
if (! Authy::tokenIsValid($user, $request->token)) {
return $this->setStatusCode(422)
->respondWithError("Invalid 2FA token.");
}
$user->setTwoFactorAuthProviderOptions(array_merge(
$user->getTwoFactorAuthProviderOptions(),
['enabled' => true]
));
$user->save();
event(new TwoFactorEnabled);
return new UserResource($user);
}
/**
* Disable 2FA for currently authenticated user.
* @return \Illuminate\Http\JsonResponse|UserResource
*/
public function destroy()
{
$user = auth()->user();
if (! Authy::isEnabled($user)) {
return $this->setStatusCode(422)
->respondWithError("2FA is not enabled for this user.");
}
Authy::delete($user);
$user->save();
event(new TwoFactorDisabled);
return new UserResource($user);
}
}