fix: 🐛 update tenant in api routes
This commit is contained in:
parent
ea87502ba4
commit
8d1156382c
7 changed files with 51 additions and 48 deletions
|
|
@ -5,7 +5,6 @@ namespace App\Http\Controllers\API;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Api\Contacts\DestroyContactsRequest;
|
||||
use App\Http\Requests\Api\Contacts\UpsertContactsRequest;
|
||||
use App\Http\Requests\Api\SendFlyerRequest;
|
||||
use App\Http\Resources\ApiResponseResource;
|
||||
use App\Http\Resources\AppUserResource;
|
||||
use App\Http\Resources\ContactResource;
|
||||
|
|
@ -37,10 +36,8 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getUsers(): \App\Http\Resources\ApiResponseResource
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = request()->tenant;
|
||||
$users = AppUserResource::collection(
|
||||
AppUser::query()->where('tenant_id', $tenantKey)->where('status', 1)->get()
|
||||
$users = AppUserResource::collection(
|
||||
AppUser::query()->where('tenant_id', \tenant()->getKey())->where('status', 1)->get()
|
||||
)->toArray(request());
|
||||
return new ApiResponseResource("OK", $users);
|
||||
}
|
||||
|
|
@ -55,11 +52,9 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getContacts(AppUser $app_user): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = request()->tenant;
|
||||
return ContactResource::collection(
|
||||
Contact::query()->whereHas('appUser', function (Builder $q) use ($tenantKey, $app_user) {
|
||||
$q->where('tenant_id', $tenantKey)->where('id', $app_user->id);
|
||||
Contact::query()->whereHas('appUser', function (Builder $q) use ($app_user) {
|
||||
$q->where('tenant_id', \tenant()->getKey())->where('id', $app_user->id);
|
||||
})->get()
|
||||
);
|
||||
}
|
||||
|
|
@ -75,13 +70,10 @@ class SyncController extends Controller
|
|||
UpsertContactsRequest $request,
|
||||
AppUser $app_user
|
||||
): \Illuminate\Http\JsonResponse {
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = $request->tenant;
|
||||
|
||||
/** @var \Illuminate\Support\Collection<string,integer> */
|
||||
$formularies = Formulary::query()->pluck('slug')->flip();
|
||||
$contactQuery = Contact::query()->whereHas('appUser', function (Builder $q) use ($tenantKey, $app_user) {
|
||||
$q->where('tenant_id', $tenantKey)->where('id', $app_user->getKey());
|
||||
$contactQuery = Contact::query()->whereHas('appUser', function (Builder $q) use ($app_user) {
|
||||
$q->where('tenant_id', \tenant()->getKey())->where('id', $app_user->getKey());
|
||||
});
|
||||
|
||||
\collect($request->contacts)->each(
|
||||
|
|
@ -129,11 +121,9 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function destroyContacts(DestroyContactsRequest $request, AppUser $app_user): \Illuminate\Http\JsonResponse
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = $request->tenant;
|
||||
Contact::query()->whereIn('id', $request->contactUuidList)
|
||||
->whereHas('appUser', function (Builder $q) use ($tenantKey, $app_user) {
|
||||
$q->where('tenant_id', $tenantKey)->where('id', $app_user->id);
|
||||
Contact::query()->whereIn('id', $request->validated()['contactUuidList'])
|
||||
->whereHas('appUser', function (Builder $q) use ($app_user) {
|
||||
$q->where('tenant_id', \tenant()->getKey())->where('id', $app_user->id);
|
||||
})->delete();
|
||||
|
||||
// * HTTP 200 is ok.
|
||||
|
|
@ -147,10 +137,8 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getDirectories(): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = request()->tenant;
|
||||
return DirectoryResource::collection(
|
||||
Directory::query()->where('tenant_id', $tenantKey)->orderBy('order')->get()
|
||||
Directory::query()->where('tenant_id', \tenant()->getKey())->orderBy('order')->get()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -159,10 +147,8 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getDocuments(): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = request()->tenant;
|
||||
return DocumentResource::collection(
|
||||
Document::query()->where('tenant_id', $tenantKey)->where('status', 1)->get()
|
||||
Document::query()->where('tenant_id', \tenant()->getKey())->where('status', 1)->get()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -172,12 +158,16 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getVersion(Request $request): array
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = $request->tenant;
|
||||
$app_uuid = $request->app_uuid;
|
||||
$app_version = $request->app_version;
|
||||
$version = Setting::query()->where('tenant_id', $tenantKey)->where('key', 'version')->value('value');
|
||||
$ShowIsActive = Setting::query()->where('tenant_id', $tenantKey)->where('key', 'ShowIsActive')->value('value');
|
||||
$version = Setting::query()
|
||||
->where('tenant_id', \tenant()->getKey())
|
||||
->where('key', 'version')
|
||||
->value('value');
|
||||
$ShowIsActive = Setting::query()
|
||||
->where('tenant_id', \tenant()->getKey())
|
||||
->where('key', 'ShowIsActive')
|
||||
->value('value');
|
||||
|
||||
try {
|
||||
$client = new \GuzzleHttp\Client();
|
||||
|
|
@ -205,10 +195,8 @@ class SyncController extends Controller
|
|||
*/
|
||||
public function getFormularies(): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = request()->tenant;
|
||||
return FormularyResource::collection(
|
||||
Formulary::query()->where('tenant_id', $tenantKey)->orderBy('order')->get()
|
||||
Formulary::query()->where('tenant_id', \tenant()->getKey())->orderBy('order')->get()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -216,11 +204,9 @@ class SyncController extends Controller
|
|||
* @param \App\Http\Requests\Api\SendFlyerRequest $request
|
||||
* @return string
|
||||
*/
|
||||
public function sendFlyer(SendFlyerRequest $request): string
|
||||
public function sendFlyer(Request $request): string
|
||||
{
|
||||
/** @var string $tenantKey */
|
||||
$tenantKey = $request->tenant;
|
||||
$requestData = $request->validated()['emails'];
|
||||
$requestData = $request['emails'];
|
||||
$email = $requestData['email'];
|
||||
$subject = $requestData['subject'];
|
||||
$message = $requestData['message'];
|
||||
|
|
@ -234,12 +220,12 @@ class SyncController extends Controller
|
|||
$noExists = [];
|
||||
foreach ($docs as $doc) {
|
||||
$exists = Storage::disk('public')
|
||||
->exists(sprintf('docs/%s/%s.%s', $tenantKey, $doc['uuid'], $doc['type']));
|
||||
->exists(sprintf('docs/%s/%s.%s', \tenant()->getKey(), $doc['uuid'], $doc['type']));
|
||||
if ($exists) {
|
||||
array_push($attach, URL::temporarySignedRoute(
|
||||
'bo.docs.download',
|
||||
now()->addDays(30),
|
||||
['tenant' => $tenantKey, 'uuid' => $doc['uuid']]
|
||||
['tenant' => \tenant()->getKey(), 'uuid' => $doc['uuid']]
|
||||
));
|
||||
array_push($filesName, $doc['title']);
|
||||
} else {
|
||||
|
|
@ -247,7 +233,7 @@ class SyncController extends Controller
|
|||
}
|
||||
}
|
||||
if (count($noExists) === 0) {
|
||||
$message = new SendFlyer([
|
||||
$mail = new SendFlyer([
|
||||
'body' => $message,
|
||||
'from' => $user->email,
|
||||
'fromName' => $user->firstname . ' ' . $user->lastname,
|
||||
|
|
@ -258,7 +244,7 @@ class SyncController extends Controller
|
|||
|
||||
Mail::to($email)->cc($user->email)->queue($message);
|
||||
} else {
|
||||
$message = new SendFlyerFailed([
|
||||
$mail = new SendFlyerFailed([
|
||||
'email' => $email,
|
||||
'message' => $message,
|
||||
'subject' => $subject,
|
||||
|
|
@ -266,7 +252,7 @@ class SyncController extends Controller
|
|||
'noExists' => $noExists
|
||||
]);
|
||||
|
||||
Mail::to($user->email)->queue($message);
|
||||
Mail::to($user->email)->queue($mail);
|
||||
} //end if
|
||||
return 'OK';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,18 @@ use Illuminate\Foundation\Http\FormRequest;
|
|||
|
||||
class DestroyContactsRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Prepare the data for validation.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'contactUuidList' => \collect($this->contactUuidList)->filter()->all(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ class UpsertContactsRequest extends FormRequest
|
|||
'contacts' => 'present|array',
|
||||
'contacts.*' => 'array',
|
||||
'contacts.*.id' => 'uuid',
|
||||
'contacts.*.lastname' => 'nullable|string|between:3,255',
|
||||
'contacts.*.firstname' => 'nullable|string|between:3,255',
|
||||
'contacts.*.lastname' => 'nullable|string|between:1,255',
|
||||
'contacts.*.firstname' => 'nullable|string|between:1,255',
|
||||
// * Dot not validate email here (soft validate), if it does not pass, app will be blocked.
|
||||
'contacts.*.email' => 'required|string|between:3,255',
|
||||
'contacts.*.phone' => 'nullable|string|between:3,255',
|
||||
'contacts.*.email' => 'required|string|between:1,255',
|
||||
'contacts.*.phone' => 'nullable|string|between:1,255',
|
||||
'contacts.*.timestamp' => 'required|date',
|
||||
|
||||
// * DATA
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace App\Http\Requests\Api;
|
|||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
/** FIXME: currently not used but will be in the future. */
|
||||
class SendFlyerRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ class Formulary extends Model
|
|||
protected $casts = [
|
||||
'required' => 'bool',
|
||||
'is_visible' => 'bool',
|
||||
// FIXME: update the json cast if api crash.
|
||||
'placeholder' => 'json',
|
||||
'details' => 'json',
|
||||
'type' => InputTypeEnum::class,
|
||||
|
|
|
|||
|
|
@ -41,8 +41,7 @@ class RouteServiceProvider extends ServiceProvider
|
|||
->namespace($this->namespace)
|
||||
->group(base_path('routes/web-bo.php'));
|
||||
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
Route::middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ use App\Http\Controllers\API\AppController;
|
|||
use App\Http\Controllers\API\SettingsController;
|
||||
use App\Http\Controllers\API\SyncController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Stancl\Tenancy\Middleware\InitializeTenancyByPath;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
@ -16,7 +17,10 @@ use Illuminate\Support\Facades\Route;
|
|||
|
|
||||
*/
|
||||
|
||||
Route::middleware('api.token')
|
||||
Route::middleware([
|
||||
InitializeTenancyByPath::class,
|
||||
'api.token',
|
||||
])->prefix('{tenant}/api')
|
||||
->name('api.')
|
||||
->group(function () {
|
||||
Route::get('settings', [SettingsController::class, 'get'])->name('settings.index');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue