tipo: modificación del cpanel y gitignore de la carpeta vendor
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Vendored
+84
@@ -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;
|
||||
}
|
||||
}
|
||||
+43
@@ -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('/'));
|
||||
}
|
||||
}
|
||||
+57
@@ -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();
|
||||
}
|
||||
}
|
||||
+27
@@ -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)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
+22
@@ -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);
|
||||
}
|
||||
}
|
||||
+90
@@ -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);
|
||||
}
|
||||
}
|
||||
+27
@@ -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)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
+76
@@ -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));
|
||||
}
|
||||
}
|
||||
+23
@@ -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(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
+26
@@ -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(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
+26
@@ -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)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
+23
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user