tipo: modificación del cpanel y gitignore de la carpeta vendor

This commit is contained in:
2026-07-07 11:35:09 -06:00
parent a0c91dc567
commit 676ef0d506
8510 changed files with 1132803 additions and 4 deletions
@@ -0,0 +1,27 @@
<?php
namespace Laravel\Jetstream\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Laravel\Jetstream\Jetstream;
class CurrentTeamController extends Controller
{
/**
* Update the authenticated user's current team.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request)
{
$team = Jetstream::newTeamModel()->findOrFail($request->team_id);
if (! $request->user()->switchTeam($team)) {
abort(403);
}
return redirect(config('fortify.home'), 303);
}
}
@@ -0,0 +1,88 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Laravel\Jetstream\Jetstream;
class ApiTokenController extends Controller
{
/**
* Show the user API token screen.
*
* @param \Illuminate\Http\Request $request
* @return \Inertia\Response
*/
public function index(Request $request)
{
return Jetstream::inertia()->render($request, 'API/Index', [
'tokens' => $request->user()->tokens->map(function ($token) {
return $token->toArray() + [
'last_used_ago' => optional($token->last_used_at)->diffForHumans(),
];
}),
'availablePermissions' => Jetstream::$permissions,
'defaultPermissions' => Jetstream::$defaultPermissions,
]);
}
/**
* Create a new API token.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
$request->validate([
'name' => ['required', 'string', 'max:255'],
]);
$token = $request->user()->createToken(
$request->name,
Jetstream::validPermissions($request->input('permissions', []))
);
return back()->with('flash', [
'token' => explode('|', $token->plainTextToken, 2)[1],
]);
}
/**
* Update the given API token's permissions.
*
* @param \Illuminate\Http\Request $request
* @param string $tokenId
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, $tokenId)
{
$request->validate([
'permissions' => 'array',
'permissions.*' => 'string',
]);
$token = $request->user()->tokens()->where('id', $tokenId)->firstOrFail();
$token->forceFill([
'abilities' => Jetstream::validPermissions($request->input('permissions', [])),
])->save();
return back(303);
}
/**
* Delete the given API token.
*
* @param \Illuminate\Http\Request $request
* @param string $tokenId
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, $tokenId)
{
$request->user()->tokens()->where('id', $tokenId)->first()->delete();
return back(303);
}
}
@@ -0,0 +1,84 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia\Concerns;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Fortify\Actions\DisableTwoFactorAuthentication;
use Laravel\Fortify\Features;
trait ConfirmsTwoFactorAuthentication
{
/**
* Validate the two factor authentication state for the request.
*
* @param \Illuminate\Http\Request
* @return void
*/
protected function validateTwoFactorAuthenticationState(Request $request)
{
if (! Features::optionEnabled(Features::twoFactorAuthentication(), 'confirm')) {
return;
}
$currentTime = time();
// Notate totally disabled state in session...
if ($this->twoFactorAuthenticationDisabled($request)) {
$request->session()->put('two_factor_empty_at', $currentTime);
}
// If was previously totally disabled this session but is now confirming, notate time...
if ($this->hasJustBegunConfirmingTwoFactorAuthentication($request)) {
$request->session()->put('two_factor_confirming_at', $currentTime);
}
// If the profile is reloaded and is not confirmed but was previously in confirming state, disable...
if ($this->neverFinishedConfirmingTwoFactorAuthentication($request, $currentTime)) {
app(DisableTwoFactorAuthentication::class)(Auth::user());
$request->session()->put('two_factor_empty_at', $currentTime);
$request->session()->remove('two_factor_confirming_at');
}
}
/**
* Determine if two factor authenticatoin is totally disabled.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function twoFactorAuthenticationDisabled(Request $request)
{
return is_null($request->user()->two_factor_secret) &&
is_null($request->user()->two_factor_confirmed_at);
}
/**
* Determine if two factor authentication is just now being confirmed within the last request cycle.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function hasJustBegunConfirmingTwoFactorAuthentication(Request $request)
{
return ! is_null($request->user()->two_factor_secret) &&
is_null($request->user()->two_factor_confirmed_at) &&
$request->session()->has('two_factor_empty_at') &&
is_null($request->session()->get('two_factor_confirming_at'));
}
/**
* Determine if two factor authentication was never totally confirmed once confirmation started.
*
* @param \Illuminate\Http\Request $request
* @param int $currentTime
* @return bool
*/
protected function neverFinishedConfirmingTwoFactorAuthentication(Request $request, $currentTime)
{
return ! array_key_exists('code', $request->session()->getOldInput()) &&
is_null($request->user()->two_factor_confirmed_at) &&
$request->session()->get('two_factor_confirming_at', 0) != $currentTime;
}
}
@@ -0,0 +1,43 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\ValidationException;
use Inertia\Inertia;
use Laravel\Fortify\Actions\ConfirmPassword;
use Laravel\Jetstream\Contracts\DeletesUsers;
class CurrentUserController extends Controller
{
/**
* Delete the current user.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Contracts\Auth\StatefulGuard $guard
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request, StatefulGuard $guard)
{
$confirmed = app(ConfirmPassword::class)(
$guard, $request->user(), $request->password
);
if (! $confirmed) {
throw ValidationException::withMessages([
'password' => __('The password is incorrect.'),
]);
}
app(DeletesUsers::class)->delete($request->user()->fresh());
$guard->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return Inertia::location(url('/'));
}
}
@@ -0,0 +1,57 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException;
use Laravel\Fortify\Actions\ConfirmPassword;
class OtherBrowserSessionsController extends Controller
{
/**
* Log out from other browser sessions.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Contracts\Auth\StatefulGuard $guard
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, StatefulGuard $guard)
{
$confirmed = app(ConfirmPassword::class)(
$guard, $request->user(), $request->password
);
if (! $confirmed) {
throw ValidationException::withMessages([
'password' => __('The password is incorrect.'),
]);
}
$guard->logoutOtherDevices($request->password);
$this->deleteOtherSessionRecords($request);
return back(303);
}
/**
* Delete the other browser session records from storage.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function deleteOtherSessionRecords(Request $request)
{
if (config('session.driver') !== 'database') {
return;
}
DB::connection(config('session.connection'))->table(config('session.table', 'sessions'))
->where('user_id', $request->user()->getAuthIdentifier())
->where('id', '!=', $request->session()->getId())
->delete();
}
}
@@ -0,0 +1,27 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Inertia\Inertia;
use Laravel\Jetstream\Jetstream;
class PrivacyPolicyController extends Controller
{
/**
* Show the privacy policy for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Inertia\Response
*/
public function show(Request $request)
{
$policyFile = Jetstream::localizedMarkdownPath('policy.md');
return Inertia::render('PrivacyPolicy', [
'policy' => Str::markdown(file_get_contents($policyFile)),
]);
}
}
@@ -0,0 +1,22 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class ProfilePhotoController extends Controller
{
/**
* Delete the current user's profile photo.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request)
{
$request->user()->deleteProfilePhoto();
return back(303)->with('status', 'profile-photo-deleted');
}
}
@@ -0,0 +1,110 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Gate;
use Laravel\Jetstream\Actions\ValidateTeamDeletion;
use Laravel\Jetstream\Contracts\CreatesTeams;
use Laravel\Jetstream\Contracts\DeletesTeams;
use Laravel\Jetstream\Contracts\UpdatesTeamNames;
use Laravel\Jetstream\Jetstream;
use Laravel\Jetstream\RedirectsActions;
class TeamController extends Controller
{
use RedirectsActions;
/**
* Show the team management screen.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @return \Inertia\Response
*/
public function show(Request $request, $teamId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
Gate::authorize('view', $team);
return Jetstream::inertia()->render($request, 'Teams/Show', [
'team' => $team->load('owner', 'users', 'teamInvitations'),
'availableRoles' => array_values(Jetstream::$roles),
'availablePermissions' => Jetstream::$permissions,
'defaultPermissions' => Jetstream::$defaultPermissions,
'permissions' => [
'canAddTeamMembers' => Gate::check('addTeamMember', $team),
'canDeleteTeam' => Gate::check('delete', $team),
'canRemoveTeamMembers' => Gate::check('removeTeamMember', $team),
'canUpdateTeam' => Gate::check('update', $team),
'canUpdateTeamMembers' => Gate::check('updateTeamMember', $team),
],
]);
}
/**
* Show the team creation screen.
*
* @param \Illuminate\Http\Request $request
* @return \Inertia\Response
*/
public function create(Request $request)
{
Gate::authorize('create', Jetstream::newTeamModel());
return Jetstream::inertia()->render($request, 'Teams/Create');
}
/**
* Create a new team.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
$creator = app(CreatesTeams::class);
$creator->create($request->user(), $request->all());
return $this->redirectPath($creator);
}
/**
* Update the given team's name.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, $teamId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
app(UpdatesTeamNames::class)->update($request->user(), $team, $request->all());
return back(303);
}
/**
* Delete the given team.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, $teamId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
app(ValidateTeamDeletion::class)->validate($request->user(), $team);
$deleter = app(DeletesTeams::class);
$deleter->delete($team);
return $this->redirectPath($deleter);
}
}
@@ -0,0 +1,90 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Laravel\Jetstream\Actions\UpdateTeamMemberRole;
use Laravel\Jetstream\Contracts\AddsTeamMembers;
use Laravel\Jetstream\Contracts\InvitesTeamMembers;
use Laravel\Jetstream\Contracts\RemovesTeamMembers;
use Laravel\Jetstream\Features;
use Laravel\Jetstream\Jetstream;
class TeamMemberController extends Controller
{
/**
* Add a new team member to a team.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request, $teamId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
if (Features::sendsTeamInvitations()) {
app(InvitesTeamMembers::class)->invite(
$request->user(),
$team,
$request->email ?: '',
$request->role
);
} else {
app(AddsTeamMembers::class)->add(
$request->user(),
$team,
$request->email ?: '',
$request->role
);
}
return back(303);
}
/**
* Update the given team member's role.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @param int $userId
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, $teamId, $userId)
{
app(UpdateTeamMemberRole::class)->update(
$request->user(),
Jetstream::newTeamModel()->findOrFail($teamId),
$userId,
$request->role
);
return back(303);
}
/**
* Remove the given user from the given team.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @param int $userId
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, $teamId, $userId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
app(RemovesTeamMembers::class)->remove(
$request->user(),
$team,
$user = Jetstream::findUserByIdOrFail($userId)
);
if ($request->user()->id === $user->id) {
return redirect(config('fortify.home'));
}
return back(303);
}
}
@@ -0,0 +1,27 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Inertia\Inertia;
use Laravel\Jetstream\Jetstream;
class TermsOfServiceController extends Controller
{
/**
* Show the terms of service for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Inertia\Response
*/
public function show(Request $request)
{
$termsFile = Jetstream::localizedMarkdownPath('terms.md');
return Inertia::render('TermsOfService', [
'terms' => Str::markdown(file_get_contents($termsFile)),
]);
}
}
@@ -0,0 +1,76 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Laravel\Fortify\Features;
use Laravel\Jetstream\Agent;
use Laravel\Jetstream\Jetstream;
class UserProfileController extends Controller
{
use Concerns\ConfirmsTwoFactorAuthentication;
/**
* Show the general profile settings screen.
*
* @param \Illuminate\Http\Request $request
* @return \Inertia\Response
*/
public function show(Request $request)
{
$this->validateTwoFactorAuthenticationState($request);
return Jetstream::inertia()->render($request, 'Profile/Show', [
'confirmsTwoFactorAuthentication' => Features::optionEnabled(Features::twoFactorAuthentication(), 'confirm'),
'sessions' => $this->sessions($request)->all(),
]);
}
/**
* Get the current sessions.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Support\Collection
*/
public function sessions(Request $request)
{
if (config('session.driver') !== 'database') {
return collect();
}
return collect(
DB::connection(config('session.connection'))->table(config('session.table', 'sessions'))
->where('user_id', $request->user()->getAuthIdentifier())
->orderBy('last_activity', 'desc')
->get()
)->map(function ($session) use ($request) {
$agent = $this->createAgent($session);
return (object) [
'agent' => [
'is_desktop' => $agent->isDesktop(),
'platform' => $agent->platform(),
'browser' => $agent->browser(),
],
'ip_address' => $session->ip_address,
'is_current_device' => $session->id === $request->session()->getId(),
'last_active' => Carbon::createFromTimestamp($session->last_activity)->diffForHumans(),
];
});
}
/**
* Create a new agent instance from the given session.
*
* @param mixed $session
* @return \Laravel\Jetstream\Agent
*/
protected function createAgent($session)
{
return tap(new Agent(), fn ($agent) => $agent->setUserAgent($session->user_agent));
}
}
@@ -0,0 +1,23 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Livewire;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class ApiTokenController extends Controller
{
/**
* Show the user API token screen.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function index(Request $request)
{
return view('api.index', [
'request' => $request,
'user' => $request->user(),
]);
}
}
@@ -0,0 +1,26 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Livewire;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Laravel\Jetstream\Jetstream;
class PrivacyPolicyController extends Controller
{
/**
* Show the privacy policy for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function show(Request $request)
{
$policyFile = Jetstream::localizedMarkdownPath('policy.md');
return view('policy', [
'policy' => Str::markdown(file_get_contents($policyFile)),
]);
}
}
@@ -0,0 +1,47 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Livewire;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Gate;
use Laravel\Jetstream\Jetstream;
class TeamController extends Controller
{
/**
* Show the team management screen.
*
* @param \Illuminate\Http\Request $request
* @param int $teamId
* @return \Illuminate\View\View
*/
public function show(Request $request, $teamId)
{
$team = Jetstream::newTeamModel()->findOrFail($teamId);
if (Gate::denies('view', $team)) {
abort(403);
}
return view('teams.show', [
'user' => $request->user(),
'team' => $team,
]);
}
/**
* Show the team creation screen.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function create(Request $request)
{
Gate::authorize('create', Jetstream::newTeamModel());
return view('teams.create', [
'user' => $request->user(),
]);
}
}
@@ -0,0 +1,26 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Livewire;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Laravel\Jetstream\Jetstream;
class TermsOfServiceController extends Controller
{
/**
* Show the terms of service for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function show(Request $request)
{
$termsFile = Jetstream::localizedMarkdownPath('terms.md');
return view('terms', [
'terms' => Str::markdown(file_get_contents($termsFile)),
]);
}
}
@@ -0,0 +1,23 @@
<?php
namespace Laravel\Jetstream\Http\Controllers\Livewire;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserProfileController extends Controller
{
/**
* Show the user profile screen.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function show(Request $request)
{
return view('profile.show', [
'request' => $request,
'user' => $request->user(),
]);
}
}
@@ -0,0 +1,62 @@
<?php
namespace Laravel\Jetstream\Http\Controllers;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Gate;
use Laravel\Jetstream\Contracts\AddsTeamMembers;
use Laravel\Jetstream\Jetstream;
class TeamInvitationController extends Controller
{
/**
* Accept a team invitation.
*
* @param \Illuminate\Http\Request $request
* @param int $invitationId
* @return \Illuminate\Http\RedirectResponse
*/
public function accept(Request $request, $invitationId)
{
$model = Jetstream::teamInvitationModel();
$invitation = $model::whereKey($invitationId)->firstOrFail();
app(AddsTeamMembers::class)->add(
$invitation->team->owner,
$invitation->team,
$invitation->email,
$invitation->role
);
$invitation->delete();
return redirect(config('fortify.home'))->banner(
__('Great! You have accepted the invitation to join the :team team.', ['team' => $invitation->team->name]),
);
}
/**
* Cancel the given team invitation.
*
* @param \Illuminate\Http\Request $request
* @param int $invitationId
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, $invitationId)
{
$model = Jetstream::teamInvitationModel();
$invitation = $model::whereKey($invitationId)->firstOrFail();
if (! Gate::forUser($request->user())->check('removeTeamMember', $invitation->team)) {
throw new AuthorizationException;
}
$invitation->delete();
return back(303);
}
}