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,75 @@
<?php
namespace Vanguard\Http\Controllers\Web\Profile;
use Illuminate\Http\Request;
use Vanguard\Events\User\ChangedAvatar;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Repositories\User\UserRepository;
use Vanguard\Services\Upload\UserAvatarManager;
/**
* Class ProfileController
* @package Vanguard\Http\Controllers
*/
class AvatarController extends Controller
{
public function __construct(private UserRepository $users)
{
}
/**
* Upload and update user's avatar.
*
* @param Request $request
* @param UserAvatarManager $avatarManager
* @return mixed
*/
public function update(Request $request, UserAvatarManager $avatarManager)
{
$request->validate(['avatar' => 'image']);
$name = $avatarManager->uploadAndCropAvatar(
$request->file('avatar'),
$request->get('points')
);
if ($name) {
return $this->handleAvatarUpdate($name);
}
return redirect()->route('profile')
->withErrors(__('Avatar image cannot be updated. Please try again.'));
}
/**
* Update avatar for currently logged in user
* and fire appropriate event.
*
* @param $avatar
* @return mixed
*/
private function handleAvatarUpdate($avatar)
{
$this->users->update(auth()->id(), ['avatar' => $avatar]);
event(new ChangedAvatar);
return redirect()->route('profile')
->withSuccess(__('Avatar changed successfully.'));
}
/**
* Update user's avatar from external location/url.
*
* @param Request $request
* @param UserAvatarManager $avatarManager
* @return mixed
*/
public function updateExternal(Request $request, UserAvatarManager $avatarManager)
{
$avatarManager->deleteAvatarIfUploaded(auth()->user());
return $this->handleAvatarUpdate($request->get('url'));
}
}
@@ -0,0 +1,35 @@
<?php
namespace Vanguard\Http\Controllers\Web\Profile;
use Vanguard\Events\User\UpdatedProfileDetails;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Http\Requests\User\UpdateProfileDetailsRequest;
use Vanguard\Repositories\User\UserRepository;
/**
* Class DetailsController
* @package Vanguard\Http\Controllers
*/
class DetailsController extends Controller
{
public function __construct(private UserRepository $users)
{
}
/**
* Update profile details.
*
* @param UpdateProfileDetailsRequest $request
* @return mixed
*/
public function update(UpdateProfileDetailsRequest $request)
{
$this->users->update(auth()->id(), $request->except('role_id', 'status'));
event(new UpdatedProfileDetails);
return redirect()->back()
->withSuccess(__('Profile updated successfully.'));
}
}
@@ -0,0 +1,41 @@
<?php
namespace Vanguard\Http\Controllers\Web\Profile;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Http\Requests\User\UpdateProfileLoginDetailsRequest;
use Vanguard\Repositories\User\UserRepository;
/**
* Class LoginDetailsController
* @package Vanguard\Http\Controllers
*/
class LoginDetailsController extends Controller
{
public function __construct(private UserRepository $users)
{
}
/**
* Update user's login details.
*
* @param UpdateProfileLoginDetailsRequest $request
* @return mixed
*/
public function update(UpdateProfileLoginDetailsRequest $request)
{
$data = $request->except('role', 'status');
// If password is not provided, then we will
// just remove it from $data array and do not change it
if (! data_get($data, 'password')) {
unset($data['password']);
unset($data['password_confirmation']);
}
$this->users->update(auth()->id(), $data);
return redirect()->route('profile')
->withSuccess(__('Login details updated successfully.'));
}
}
@@ -0,0 +1,47 @@
<?php
namespace Vanguard\Http\Controllers\Web\Profile;
use Illuminate\Contracts\View\Factory;
use Illuminate\View\View;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Repositories\Country\CountryRepository;
use Vanguard\Repositories\Role\RoleRepository;
use Vanguard\Repositories\User\UserRepository;
use Vanguard\Support\Enum\UserStatus;
/**
* Class ProfileController
* @package Vanguard\Http\Controllers
*/
class ProfileController extends Controller
{
public function __construct(
private UserRepository $users,
private RoleRepository $roles,
private CountryRepository $countries
)
{
}
/**
* Display user's profile page.
*
* @return Factory|View
*/
public function show()
{
$roles = $this->roles->all()->filter(function ($role) {
return $role->id == auth()->user()->role_id;
})->pluck('name', 'id');
return view('user.profile', [
'user' => auth()->user(),
'edit' => true,
'roles' => $roles,
'countries' => [0 => __('Select a Country')] + $this->countries->lists()->toArray(),
'socialLogins' => $this->users->getUserSocialLogins(auth()->id()),
'statuses' => UserStatus::lists()
]);
}
}
@@ -0,0 +1,43 @@
<?php
namespace Vanguard\Http\Controllers\Web\Profile;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Repositories\Session\SessionRepository;
/**
* Class SessionsController
* @package Vanguard\Http\Controllers\Web\Profile
*/
class SessionsController extends Controller
{
public function __construct(private SessionRepository $sessions)
{
}
/**
* Get sessions for specified user.
*/
public function index()
{
return view('user.sessions', [
'profile' => true,
'user' => auth()->user(),
'sessions' => $this->sessions->getUserSessions(auth()->id())
]);
}
/**
* Invalidate user's session.
*
* @param $session \stdClass Session object.
* @return mixed
*/
public function destroy($session)
{
$this->sessions->invalidateSession($session->id);
return redirect()->route('profile.sessions')
->withSuccess(__('Session invalidated successfully.'));
}
}