primo upload
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user