many updates
parent
7d3219f0c5
commit
39aa889b90
|
|
@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
|||
use App\Models\Objects\Field;
|
||||
use App\Models\Objects\NirObject;
|
||||
use App\Models\Objects\ObjectType;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use App\Transformers\Objects\ObjectTransformer;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
|
@ -19,7 +20,11 @@ class ObjectsController extends Controller {
|
|||
}
|
||||
|
||||
public function index(Request $request): JsonResponse {
|
||||
$filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : [])->filter(function($val) {return $val;});
|
||||
$query = $this->model->query();
|
||||
$service = FiltersService::getService('objects');
|
||||
$service->applyFilters($query, $filters);
|
||||
/*
|
||||
if (($val = $request->get('type')) && ($type = ObjectType::query()->where(['name' => $val])->first())) {
|
||||
$query->whereHas('type', function ($query) use ($val) {
|
||||
$query->where('name', $val)->orWhereHas('parent', function ($query) use ($val) {
|
||||
|
|
@ -36,6 +41,7 @@ class ObjectsController extends Controller {
|
|||
elseif ($field = Field::byUuidOrName($prop)->first()) $field->applyFilter($query, $value);
|
||||
});
|
||||
$query->orderBy('created_at', 'desc');
|
||||
*/
|
||||
$paginator = $query->paginate(config('app.pagination_limit'));
|
||||
return fractal($paginator, new ObjectTransformer())->respond();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\Pages;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Pages\Page;
|
||||
use App\Models\Publications\Publication;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use App\Transformers\Pages\PageTransformer;
|
||||
use App\Transformers\Publications\PublicationTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
|
@ -31,7 +32,10 @@ class PagesController extends Controller {
|
|||
}
|
||||
|
||||
public function index(Request $request): JsonResponse {
|
||||
$filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : [])->filter(function($val) {return $val;});
|
||||
$query = $this->model->query();
|
||||
$service = FiltersService::getService('pages');
|
||||
$service->applyFilters($query, $filters);
|
||||
$paginator = $query->paginate(config('app.pagination_limit'));
|
||||
return fractal($paginator, new PageTransformer())->respond();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
|||
use App\Models\Pages\Page;
|
||||
use App\Models\Publications\Publication;
|
||||
use App\Models\Publications\PublicationType;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use App\Transformers\Publications\PublicationTransformer;
|
||||
use App\Transformers\Registries\RegistryTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
|
@ -26,18 +27,10 @@ class PublicationsController extends Controller {
|
|||
}
|
||||
|
||||
public function index(Request $request): JsonResponse {
|
||||
$filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : [])->filter(function($val) {return $val;});
|
||||
$query = $this->model->query()->orderBy('published_at', 'desc');
|
||||
$user = Auth::user();
|
||||
if (!($user->isAdmin ?? null)) {
|
||||
$query->where(['is_published' => true]);
|
||||
$query->where('published_at', '<=', now());
|
||||
}
|
||||
|
||||
if ($page = Page::byUuid($request->get('page_id'))->first()) {
|
||||
$query->where(['page_id' => $page->id]);
|
||||
} elseif ($page = Page::query()->where(['sub_type' => $request->get('sub_type')])->first()) {
|
||||
$query->where('page_id', $page->id);
|
||||
}
|
||||
$service = FiltersService::getService('publications');
|
||||
$service->applyFilters($query, $filters);
|
||||
$paginator = $query->paginate(config('app.pagination_limit'));
|
||||
return fractal($paginator, new PublicationTransformer())->respond();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,82 +5,71 @@ namespace App\Http\Controllers\Api\Users;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Transformers\Users\UserTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UsersController extends Controller
|
||||
{
|
||||
protected $model;
|
||||
class UsersController extends Controller {
|
||||
protected User $model;
|
||||
|
||||
public function __construct(User $model)
|
||||
{
|
||||
public function __construct(User $model) {
|
||||
$this->model = $model;
|
||||
/*
|
||||
$this->middleware('permission:List users')->only('index');
|
||||
$this->middleware('permission:List users')->only('show');
|
||||
$this->middleware('permission:Create users')->only('store');
|
||||
$this->middleware('permission:Update users')->only('update');
|
||||
$this->middleware('permission:Delete users')->only('destroy');
|
||||
*/
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$paginator = $this->model->with('roles.permissions')->paginate($request->get('limit', config('app.pagination_limit', 20)));
|
||||
if ($request->has('limit')) {
|
||||
$paginator->appends('limit', $request->get('limit'));
|
||||
}
|
||||
|
||||
public function checkEmail(Request $request): JsonResponse {
|
||||
$this->validate($request, ['email' => 'required|email|unique:users,email']);
|
||||
return response()->json(null);
|
||||
}
|
||||
|
||||
public function index(Request $request): JsonResponse {
|
||||
$paginator = $this->model->with('roles.permissions')->paginate($request->get('limit', config('app.pagination_limit', 20)));
|
||||
//if ($request->has('limit')) $paginator->appends('limit', $request->get('limit'));
|
||||
return fractal($paginator, new UserTransformer())->respond();
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
public function show($id): JsonResponse {
|
||||
$user = $this->model->with('roles.permissions')->byUuid($id)->firstOrFail();
|
||||
|
||||
return fractal($user, new UserTransformer())->respond();
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
public function store(Request $request): JsonResponse {
|
||||
$this->validate($request, [
|
||||
'name' => 'required',
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'password' => 'required|min:8|confirmed',
|
||||
]);
|
||||
$user = $this->model->create($request->all());
|
||||
if ($request->has('roles')) {
|
||||
$user->syncRoles($request['roles']);
|
||||
}
|
||||
|
||||
$user->assignRole('User');
|
||||
//if ($request->has('roles')) $user->syncRoles($request['roles']);
|
||||
return fractal($user, new UserTransformer())->respond(201);
|
||||
}
|
||||
|
||||
public function update(Request $request, $uuid)
|
||||
{
|
||||
public function update(Request $request, $uuid): JsonResponse {
|
||||
$user = $this->model->byUuid($uuid)->firstOrFail();
|
||||
$rules = [
|
||||
'name' => 'required',
|
||||
'email' => 'required|email|unique:users,email,'.$user->id,
|
||||
];
|
||||
if ($request->method() == 'PATCH') {
|
||||
$rules = [
|
||||
'name' => 'sometimes|required',
|
||||
'email' => 'sometimes|required|email|unique:users,email,'.$user->id,
|
||||
];
|
||||
}
|
||||
if ($request->method() == 'PATCH') $rules = [
|
||||
'name' => 'sometimes|required',
|
||||
'email' => 'sometimes|required|email|unique:users,email,'.$user->id,
|
||||
];
|
||||
$this->validate($request, $rules);
|
||||
// Except password as we don't want to let the users change a password from this endpoint
|
||||
$user->update($request->except('_token', 'password'));
|
||||
if ($request->has('roles')) {
|
||||
$user->syncRoles($request['roles']);
|
||||
}
|
||||
|
||||
//if ($request->has('roles')) $user->syncRoles($request['roles']);
|
||||
return fractal($user->fresh(), new UserTransformer())->respond();
|
||||
}
|
||||
|
||||
public function destroy(Request $request, $uuid)
|
||||
{
|
||||
public function destroy(Request $request, $uuid): JsonResponse {
|
||||
$user = $this->model->byUuid($uuid)->firstOrFail();
|
||||
$user->delete();
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ use App\Models\Objects\Values\BooleanValue;
|
|||
use App\Models\Objects\Values\DateValue;
|
||||
use App\Models\Objects\Values\DocumentValue;
|
||||
use App\Models\Objects\Values\FloatValue;
|
||||
use App\Models\Objects\Values\HtmlValue;
|
||||
use App\Models\Objects\Values\ImageValue;
|
||||
use App\Models\Objects\Values\IntegerValue;
|
||||
use App\Models\Objects\Values\RelationValue;
|
||||
use App\Models\Objects\Values\StringValue;
|
||||
use App\Models\Objects\Values\TextValue;
|
||||
use App\Models\Pages\Page;
|
||||
use App\Models\Registries\Entry;
|
||||
use App\Models\User;
|
||||
use App\Support\UuidScopeTrait;
|
||||
|
|
@ -46,6 +48,10 @@ class NirObject extends Model {
|
|||
return $this->morphedByMany(Entry::class, 'objectable');
|
||||
}
|
||||
|
||||
public function pages(): MorphToMany {
|
||||
return $this->morphedByMany(Page::class, 'objectable');
|
||||
}
|
||||
|
||||
public function objects(): MorphToMany {
|
||||
return $this->morphToMany(NirObject::class, 'objectable');
|
||||
}
|
||||
|
|
@ -76,6 +82,9 @@ class NirObject extends Model {
|
|||
public function textValues(): HasMany {
|
||||
return $this->hasMany(TextValue::class, 'object_id');
|
||||
}
|
||||
public function htmlValues(): HasMany {
|
||||
return $this->hasMany(HtmlValue::class, 'object_id');
|
||||
}
|
||||
public function integerValues(): HasMany {
|
||||
return $this->hasMany(IntegerValue::class, 'object_id');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ class User extends Authenticatable {
|
|||
public function getPrivilegesAttribute(): array {
|
||||
return [
|
||||
'admin' => $this->isAdmin,
|
||||
'main_company_member' => $this->isMainCompanyMember,
|
||||
'is_expert' => $this->isExpert
|
||||
'expert' => $this->isExpert,
|
||||
'main_company_member' => $this->isMainCompanyMember
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -154,6 +154,14 @@ class User extends Authenticatable {
|
|||
}
|
||||
|
||||
|
||||
public function setPassword(string $password): bool {
|
||||
return $this->update(['password' => Hash::make($password)]);
|
||||
}
|
||||
|
||||
public function checkPassword(string $password): bool {
|
||||
return Hash::check($password, $this->password);
|
||||
}
|
||||
|
||||
public function sendPasswordResetNotification($token) {
|
||||
Mail::to($this->email)->send(new PasswordResetRequested($this, $token));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ namespace App\Services\Filters;
|
|||
|
||||
use App\Services\Filters\Applications\ApplicationFiltersServices;
|
||||
use App\Services\Filters\Companies\CompanyFiltersServices;
|
||||
use App\Services\Filters\Objects\ObjectFiltersServices;
|
||||
use App\Services\Filters\Pages\PageFiltersServices;
|
||||
use App\Services\Filters\Publications\PublicationFiltersServices;
|
||||
use App\Services\Filters\Registries\RegistryFiltersServices;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Collection;
|
||||
|
|
@ -11,9 +14,12 @@ use Illuminate\Support\Facades\Date;
|
|||
|
||||
class FiltersService {
|
||||
public static array $services = [
|
||||
PageFiltersServices::class,
|
||||
PublicationFiltersServices::class,
|
||||
RegistryFiltersServices::class,
|
||||
CompanyFiltersServices::class,
|
||||
ApplicationFiltersServices::class
|
||||
ApplicationFiltersServices::class,
|
||||
ObjectFiltersServices::class
|
||||
];
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Objects;
|
||||
|
||||
use App\Models\Objects\Field;
|
||||
use App\Models\Objects\NirObject;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class ObjectFilters extends FiltersService {
|
||||
public function get(Collection $filters): array {
|
||||
$groups = [
|
||||
];
|
||||
$query = NirObject::query();
|
||||
$this->applyFilters($query, $filters);
|
||||
return ['groups' => ['data' => $groups], 'total' => $query->count()];
|
||||
}
|
||||
|
||||
|
||||
public function applyFilters(Builder $query, Collection $filters) {
|
||||
$this->applyNativeFilters($query, $filters);
|
||||
$this->applyObjectFilters($query, $filters);
|
||||
$this->applyPermissionsFilters($query);
|
||||
}
|
||||
|
||||
public function applyNativeFilters(Builder $query, Collection $filters) {
|
||||
$filters->each(function($value, $prop) use($query) {
|
||||
$this->applyNativeFilter($query, $prop, $value);
|
||||
});
|
||||
}
|
||||
|
||||
public function applyNativeFilter(Builder $query, $prop, $value) {
|
||||
if ($value) {
|
||||
if ($prop === 'search') $this->applySearchFilter($query, $value, ['name', ['pages' => ['name']], ['stringValues' => ['value']], ['textValues' => ['value']], ['htmlValues' => ['value']]]);
|
||||
}
|
||||
}
|
||||
|
||||
public function applyObjectFilters(Builder $query, Collection $filters) {
|
||||
Field::applyFilters($query, $filters);
|
||||
}
|
||||
|
||||
public function applyCompanyFilter(Builder $query, $value) {
|
||||
$query->whereHas('company', function($query) use($value) {
|
||||
($value === 'main') ? $query->where(['is_main' => 1]) : $query->whereIn('uuid', is_array($value) ? $value : [$value]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public function applyPermissionsFilters(Builder $query) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Objects;
|
||||
|
||||
class ObjectFiltersServices {
|
||||
public static array $services = [
|
||||
'objects' => ObjectFilters::class
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Pages;
|
||||
|
||||
use App\Models\Companies\CompanyMember;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class PageFilters extends FiltersService {
|
||||
public function get(Collection $filters): array {
|
||||
$groups = [
|
||||
[
|
||||
'name' => 'common',
|
||||
'title' => 'Общие параметры',
|
||||
'fields' => $this->nativeFields($filters)
|
||||
]
|
||||
];
|
||||
$query = CompanyMember::query();
|
||||
$this->applyFilters($query, $filters);
|
||||
return ['groups' => ['data' => $groups], 'total' => $query->count()];
|
||||
}
|
||||
|
||||
public function nativeFields(Collection $filters): array {
|
||||
return [
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function applyFilters(Builder $query, Collection $filters) {
|
||||
$this->applyNativeFilters($query, $filters);
|
||||
$this->applyPermissionsFilters($query);
|
||||
}
|
||||
|
||||
public function applyNativeFilters(Builder $query, Collection $filters) {
|
||||
$filters->each(function($value, $prop) use($query) {
|
||||
$this->applyNativeFilter($query, $prop, $value);
|
||||
});
|
||||
}
|
||||
|
||||
public function applyNativeFilter(Builder $query, $prop, $value) {
|
||||
if ($value) {
|
||||
if ($prop === 'search') $this->applySearchFilter($query, $value, ['name']);
|
||||
}
|
||||
}
|
||||
|
||||
public function applyPermissionsFilters(Builder $query) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Pages;
|
||||
|
||||
class PageFiltersServices {
|
||||
public static array $services = [
|
||||
'pages' => PageFilters::class
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Publications;
|
||||
|
||||
use App\Models\Companies\CompanyMember;
|
||||
use App\Services\Filters\FiltersService;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class PublicationFilters extends FiltersService {
|
||||
public function get(Collection $filters): array {
|
||||
$groups = [
|
||||
[
|
||||
'name' => 'common',
|
||||
'title' => 'Общие параметры',
|
||||
'fields' => $this->nativeFields($filters)
|
||||
]
|
||||
];
|
||||
$query = CompanyMember::query();
|
||||
$this->applyFilters($query, $filters);
|
||||
return ['groups' => ['data' => $groups], 'total' => $query->count()];
|
||||
}
|
||||
|
||||
public function nativeFields(Collection $filters): array {
|
||||
return [
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function applyFilters(Builder $query, Collection $filters) {
|
||||
$this->applyNativeFilters($query, $filters);
|
||||
$this->applyPermissionsFilters($query);
|
||||
}
|
||||
|
||||
public function applyNativeFilters(Builder $query, Collection $filters) {
|
||||
$filters->each(function($value, $prop) use($query) {
|
||||
$this->applyNativeFilter($query, $prop, $value);
|
||||
});
|
||||
}
|
||||
|
||||
public function applyNativeFilter(Builder $query, $prop, $value) {
|
||||
if ($value) {
|
||||
if ($prop === 'search') $this->applySearchFilter($query, $value, ['name', 'excerpt']);
|
||||
elseif ($prop === 'page') $this->applyRelationFilter($query, 'page', $value);
|
||||
}
|
||||
}
|
||||
|
||||
public function applyPermissionsFilters(Builder $query) {
|
||||
$user = Auth::user();
|
||||
if (!($user->isAdmin ?? null)) $query->where(['is_published' => true])->where('published_at', '<=', now());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Filters\Publications;
|
||||
|
||||
class PublicationFiltersServices {
|
||||
public static array $services = [
|
||||
'publications' => PublicationFilters::class
|
||||
];
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ use App\Services\Forms\Users\UserFormsServices;
|
|||
|
||||
class FormsService {
|
||||
public array $formTitles = ['create' => '', 'update' => ''];
|
||||
public array $errors = [];
|
||||
|
||||
public static array $services = [
|
||||
PageFormsServices::class,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ namespace App\Services\Forms\Users;
|
|||
|
||||
class UserFormsServices {
|
||||
public static array $services = [
|
||||
'user' => UserForms::class
|
||||
'user' => UserForms::class,
|
||||
'userProfile' => UserProfileForms::class,
|
||||
'userPassword' => UserPasswordForms::class
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Users;
|
||||
|
||||
use App\Models\Objects\FieldType;
|
||||
use App\Models\User;
|
||||
use App\Services\Forms\FormsService;
|
||||
use App\Transformers\Users\UserTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class UserPasswordForms extends FormsService {
|
||||
public array $formTitles = ['create' => '', 'update' => 'Изменение пароля'];
|
||||
|
||||
public function form(?string $id = null, array $data = []): array {
|
||||
$model = User::byUuid($id)->first();
|
||||
$groups = [
|
||||
['name' => 'common', 'fields' => $this->commonGroupFields($model)]
|
||||
];
|
||||
return ['title' => $this->formTitle($model), 'data' => $groups];
|
||||
}
|
||||
|
||||
public function commonGroupFields(?User $model): array {
|
||||
$fields = [
|
||||
[
|
||||
'name' => 'current_password',
|
||||
'title' => 'Текущий пароль',
|
||||
'type' => FieldType::STRING,
|
||||
'appearance' => 'password',
|
||||
'required' => true
|
||||
],
|
||||
[
|
||||
'name' => 'password',
|
||||
'title' => 'Новый пароль',
|
||||
'type' => FieldType::STRING,
|
||||
'appearance' => 'password',
|
||||
'required' => true
|
||||
],
|
||||
[
|
||||
'name' => 'confirmation',
|
||||
'title' => 'Подтверждение пароля',
|
||||
'type' => FieldType::STRING,
|
||||
'appearance' => 'password',
|
||||
'required' => true
|
||||
]
|
||||
];
|
||||
return ['data' => $fields];
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function store(array $data): void {
|
||||
}
|
||||
|
||||
public function update(string $id, array $data): ?JsonResponse {
|
||||
$model = User::byUuid($id)->firstOrFail();
|
||||
//Validator::make($data, []);
|
||||
if (!$model->checkPassword($data['current_password'])) $this->error('current_password', 'Текущий пароль указан неверно');
|
||||
if (($data['password']) !== ($data['confirmation'])) $this->error('confirmation', 'Пароль и подтверждение пароля не совпадают');
|
||||
if (!$this->errors) {
|
||||
$model->setPassword($data['password']);
|
||||
return fractal($model, new UserTransformer())->respond();
|
||||
} else return response()->json($this->errors, 422);
|
||||
}
|
||||
|
||||
public function error($field, $message) {
|
||||
$this->errors[$field][] = $message;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Users;
|
||||
|
||||
use App\Models\Objects\FieldType;
|
||||
use App\Models\User;
|
||||
use App\Services\Forms\FormsService;
|
||||
use App\Transformers\Assets\AssetTransformer;
|
||||
use App\Transformers\Users\UserTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class UserProfileForms extends FormsService {
|
||||
public array $formTitles = ['create' => '', 'update' => 'Редактирование профиля'];
|
||||
|
||||
public function form(?string $id = null, array $data = []): array {
|
||||
$model = User::byUuid($id)->first();
|
||||
$groups = [
|
||||
['name' => 'common', 'fields' => $this->commonGroupFields($model)]
|
||||
];
|
||||
return ['title' => $this->formTitle($model), 'data' => $groups];
|
||||
}
|
||||
|
||||
public function commonGroupFields(?User $model): array {
|
||||
$fields = [
|
||||
[
|
||||
'name' => 'name',
|
||||
'title' => 'Фамилия, имя, отчество',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->name ?? null
|
||||
],
|
||||
[
|
||||
'name' => 'phone',
|
||||
'title' => 'Телефон',
|
||||
'type' => FieldType::STRING,
|
||||
'value' => $model->phone ?? null
|
||||
],
|
||||
[
|
||||
'name' => 'avatar',
|
||||
'title' => 'Фотография',
|
||||
'type' => FieldType::IMAGE,
|
||||
'value' => ($model->avatar ?? null) ? fractal($model->avatar, new AssetTransformer()) : null
|
||||
]
|
||||
];
|
||||
return ['data' => $fields];
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function store(array $data): void {
|
||||
}
|
||||
|
||||
public function update(string $id, array $data): ?JsonResponse {
|
||||
$model = User::byUuid($id)->firstOrFail();
|
||||
$model->update($data);
|
||||
$model->setAvatar($data['avatar'] ?? null);
|
||||
return fractal($model->fresh(), new UserTransformer())->respond();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ namespace App\Transformers\Objects;
|
|||
|
||||
use App\Models\Objects\NirObject;
|
||||
use App\Services\PermissionsService;
|
||||
use App\Transformers\Pages\PageTransformer;
|
||||
use App\Transformers\Users\UserTransformer;
|
||||
use League\Fractal\Resource\Collection;
|
||||
use League\Fractal\Resource\Item;
|
||||
|
|
@ -16,7 +17,7 @@ class ObjectTransformer extends TransformerAbstract {
|
|||
];
|
||||
|
||||
protected array $availableIncludes = [
|
||||
'groups', 'type', 'owner', 'permissions'
|
||||
'groups', 'type', 'owner', 'pages', 'permissions'
|
||||
];
|
||||
|
||||
public function transform(NirObject $model): array {
|
||||
|
|
@ -42,6 +43,10 @@ class ObjectTransformer extends TransformerAbstract {
|
|||
return $model->owner ? $this->item($model->owner, new UserTransformer()) : null;
|
||||
}
|
||||
|
||||
public function includePages(NirObject $model): Collection {
|
||||
return $this->collection($model->pages, new PageTransformer());
|
||||
}
|
||||
|
||||
public function includePermissions(NirObject $model): Primitive {
|
||||
return $this->primitive((new PermissionsService($model))->get());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@
|
|||
|
||||
@section('content')
|
||||
@if($status === \App\Models\Applications\ApplicationStatus::PROCESSING)
|
||||
<p>{{$application->title}} поступила на рассмотрение</p>
|
||||
<p><b>{{$application->title}} поступила на рассмотрение</b></p>
|
||||
<p><b>Заявитель</b>: {{$application->applicant ?? 'не указано'}}</p>
|
||||
<p><b>Наименование продукции</b>: {{$application->product->name ?? 'не указано'}}</p>
|
||||
<p><b>Назначение продукции</b>: {{$application->product->purpose ?? 'не указано'}}</p>
|
||||
@elseif($status === \App\Models\Applications\ApplicationStatus::COMPLETED)
|
||||
<p>{{$application->title}} выполнена.</p>
|
||||
<p><b>{{$application->title}} выполнена.</b></p>
|
||||
@endif
|
||||
@endsection
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
@extends('mail.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
<p>Вы запросили сброс пароля на интернет-потрале {{\App\Models\Advisories\Advisory::main()->caption}}</p>
|
||||
<p>Вы запросили сброс пароля на сайте ФАУ ФЦС</p>
|
||||
<p><a class="btn" href="{{url('password/reset', [$token, $recipient->email])}}">Сбросить пароль</a></p>
|
||||
<p>Ссылка на сброс пароля действительна в течение 60 минут.</p>
|
||||
<p>Если вы не запрашивали сброс пароля, никаких дальнейших действий не требуется.</p>
|
||||
|
|
|
|||
|
|
@ -8,12 +8,11 @@ Route::get('assets/{uuid}', 'Api\Assets\RenderFileController@open');
|
|||
Route::get('assets/{uuid}/render', 'Api\Assets\RenderFileController@show');
|
||||
Route::get('assets/{uuid}/download', 'Api\Assets\RenderFileController@download');
|
||||
|
||||
Route::post('register', 'Api\Auth\RegisterController@store');
|
||||
Route::post('signup', 'Api\Users\UsersController@store');
|
||||
Route::get('users/check-email', 'Api\Users\UsersController@checkEmail');
|
||||
Route::post('passwords/reset', 'Api\Auth\PasswordsController@store');
|
||||
Route::put('passwords/reset', 'Api\Auth\PasswordsController@update');
|
||||
|
||||
Route::get('/check-email', 'Api\Auth\RegisterController@checkEmail');
|
||||
|
||||
Route::get('pages', 'Api\Pages\PagesController@index');
|
||||
Route::get('pages/root', 'Api\Pages\PagesController@root');
|
||||
Route::get('pages/find', 'Api\Pages\PagesController@find');
|
||||
|
|
@ -23,8 +22,10 @@ Route::get('publications', 'Api\Publications\PublicationsController@index');
|
|||
Route::get('publications/find', 'Api\Publications\PublicationsController@find');
|
||||
Route::get('publications/{id}', 'Api\Publications\PublicationsController@show');
|
||||
|
||||
Route::apiResource('object-types', 'Api\Objects\ObjectTypesController');
|
||||
Route::apiResource('object-types', 'Api\Objects\ObjectTypesController', []);
|
||||
|
||||
Route::put('objects/move/{id}', 'Api\Objects\ObjectsController@move');
|
||||
Route::apiResource('objects', 'Api\Objects\ObjectsController');
|
||||
|
||||
Route::group(['prefix' => 'registries'], function() {
|
||||
Route::get('/categories', 'Api\Registries\CategoriesController@index');
|
||||
|
|
@ -70,8 +71,6 @@ Route::group(['middleware' => ['auth:api']], function() {
|
|||
Route::post('/', 'Api\Assets\UploadFileController@store');
|
||||
});
|
||||
|
||||
Route::put('objects/move/{id}', 'Api\Objects\ObjectsController@move');
|
||||
Route::apiResource('objects', 'Api\Objects\ObjectsController');
|
||||
|
||||
Route::group(['prefix' => 'forms'], function() {
|
||||
Route::get('/{target}/{type?}/{id?}', 'Api\Forms\FormsController@get');
|
||||
|
|
|
|||
Loading…
Reference in New Issue