CoolCMS API

UserRepository extends ApiRepository
in package

FinalYes

Admin repository that reads through the Api bridge and bypasses the query cache by default.

find(), findBy() and findAll() send ApiBridge::PARAM_USE_CACHE = false. $useCache is ?bool: null leaves the decision to this layer (false); an explicit true (->useCache(true) on the query) is respected and is the only way to request the cache.

IMPORTANT: an admin form is a read followed by a write, so a stale cached value would be written back to the DB (silent data regression). Invalidation cannot cover it: the view counters (views, viewsList, viewsDetail) are deliberately excluded from it (SaveTrait::$nonInvalidatingColumns), because bumping on every detail view would drop the cache of all lists.

NOTE: this default is not the only safeguard. The main switch is QueryCacheContext, turned off for the whole request by BasePresenter::startup(), because an admin request also runs front managers (AssetManager, ThemeManager, UserManager) through the front repository. This default covers admin reads outside an admin request (CLI harness, admin cron).

Table of Contents

Properties

$apiAuthEndpoint  : string
Login goes to the auth endpoint, not to user CRUD (same as the front end counterpart).
$apiEndpoint  : string
Api presenter path (e.g. `api/system/page`); set by each concrete repository.
$bridge  : ApiBridge

Methods

__construct()  : mixed
delete()  : Result
Deletes like the shared repository ({@see \App\Core\Traits\Shared\Models\Repositories\DeleteTrait}) but keeps the response data: a bulk delete with a nonexistent id is a partial success, and the user list builds its "deleted X, not found Y" message from `deletedCount` and `totalCount`.
deleteAll()  : Result
find()  : array<string|int, mixed>
findAll()  : array<string|int, mixed>
findBy()  : array<string|int, mixed>
login()  : Result
`$deviceToken` is the raw cookie of a known device ({@see \App\Core\Security\LoginDeviceCookie}); the Api verifies its signature. Without the cookie the key is not sent.
save()  : Result
updateColumns()  : Result
failSoftRead()  : array<string|int, mixed>
Normalizes a bridge response to plain data; a failed envelope or a non-array gives `[]`.
getApiCallSource()  : string
Branch marker for writes ({@see ApiBridge::PARAM_SOURCE}), read by the shared repository `SaveTrait`.

Properties

$apiAuthEndpoint

Login goes to the auth endpoint, not to user CRUD (same as the front end counterpart).

protected string $apiAuthEndpoint = 'api/system/auth'

$apiEndpoint

Api presenter path (e.g. `api/system/page`); set by each concrete repository.

protected string $apiEndpoint = 'api/system/user'

Methods

delete()

Deletes like the shared repository ({@see \App\Core\Traits\Shared\Models\Repositories\DeleteTrait}) but keeps the response data: a bulk delete with a nonexistent id is a partial success, and the user list builds its "deleted X, not found Y" message from `deletedCount` and `totalCount`.

public delete(int|array<string|int, mixed> $id) : Result
Parameters
$id : int|array<string|int, mixed>
Return values
Result

deleteAll()

public deleteAll([array<string|int, mixed> $filters = [] ]) : Result
Parameters
$filters : array<string|int, mixed> = []
Return values
Result

find()

public find(int $id[, string|array<string|int, mixed> $includes = [] ][, bool|null $useCache = null ]) : array<string|int, mixed>
Parameters
$id : int
$includes : string|array<string|int, mixed> = []
$useCache : bool|null = null
Return values
array<string|int, mixed>

findAll()

public findAll([array<string|int, mixed>|null $filters = [] ][, array<string|int, mixed>|null $orderBys = null ][, int|null $offset = null ][, int|null $limit = null ][, array<string|int, mixed>|null $columns = null ][, bool $computeTotalCount = false ][, string|array<string|int, mixed> $includes = [] ][, bool|null $useCache = null ]) : array<string|int, mixed>
Parameters
$filters : array<string|int, mixed>|null = []
$orderBys : array<string|int, mixed>|null = null
$offset : int|null = null
$limit : int|null = null
$columns : array<string|int, mixed>|null = null
$computeTotalCount : bool = false
$includes : string|array<string|int, mixed> = []
$useCache : bool|null = null
Return values
array<string|int, mixed>

findBy()

public findBy([array<string|int, mixed>|null $filters = [] ][, string|array<string|int, mixed> $includes = [] ][, bool|null $useCache = null ]) : array<string|int, mixed>
Parameters
$filters : array<string|int, mixed>|null = []
$includes : string|array<string|int, mixed> = []
$useCache : bool|null = null
Return values
array<string|int, mixed>

login()

`$deviceToken` is the raw cookie of a known device ({@see \App\Core\Security\LoginDeviceCookie}); the Api verifies its signature. Without the cookie the key is not sent.

public login(string $username, string $password[, string|null $deviceToken = null ]) : Result
Parameters
$username : string
$password : string
$deviceToken : string|null = null
Return values
Result

save()

public save(array<string, mixed> $data[, array<string, mixed> $meta = [] ][, array<int, string> $skipFields = [] ]) : Result
Parameters
$data : array<string, mixed>

extracted entity payload

$meta : array<string, mixed> = []
$skipFields : array<int, string> = []
Return values
Result

updateColumns()

public updateColumns(array<string|int, mixed> $ids, array<string, mixed> $values) : Result
Parameters
$ids : array<string|int, mixed>

ids or composite-id arrays

$values : array<string, mixed>

property name => new value

Return values
Result

failSoftRead()

Normalizes a bridge response to plain data; a failed envelope or a non-array gives `[]`.

protected failSoftRead(mixed $response, string $endpoint) : array<string|int, mixed>

NOTE: it does not log on purpose. ApiBridge::call(), which sees both the endpoint and the caller, has already written the API_FAILSOFT source=bridge line; a second copy would turn one failure into three lines in auth.log.

Parameters
$response : mixed
$endpoint : string

only for call readability; the log takes the endpoint from the bridge

Return values
array<string|int, mixed>

getApiCallSource()

Branch marker for writes ({@see ApiBridge::PARAM_SOURCE}), read by the shared repository `SaveTrait`.

protected getApiCallSource() : string
Return values
string
On this page

Search results