mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 17:08:45 +00:00
Merge branch '1.5.x' into chore-sync-1.5.x
This commit is contained in:
commit
1ac7d3576d
174 changed files with 1696 additions and 201 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
|
@ -1,4 +1,4 @@
|
|||
[submodule "app/console"]
|
||||
path = app/console
|
||||
url = https://github.com/appwrite/console
|
||||
branch = 4.0.6
|
||||
branch = 4.3.2
|
||||
|
|
|
|||
36
CHANGES.md
36
CHANGES.md
|
|
@ -1,3 +1,39 @@
|
|||
# Version 1.5.6
|
||||
## What's Changed
|
||||
|
||||
### Notable Changes
|
||||
|
||||
* Prevent functions domain to be used as custom domain in [#7934](https://github.com/appwrite/appwrite/pull/7934)
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix auth mode check in [#7980](https://github.com/appwrite/appwrite/pull/7980)
|
||||
* Fix templates not copying hidden files in [#7610](https://github.com/appwrite/appwrite/pull/7610)
|
||||
* Use `resourceInternalId` for Querying Function Deployments in [#8038](https://github.com/appwrite/appwrite/pull/8038)
|
||||
* Fix Email OTP not verifying account in [#8084](https://github.com/appwrite/appwrite/pull/8084)
|
||||
* Fix MFA email verification code font in [#8082](https://github.com/appwrite/appwrite/pull/8082)
|
||||
* Don't kick user and require verification after enabling MFA in [#8081](https://github.com/appwrite/appwrite/pull/8081)
|
||||
* Fix typo in credit-cards.php credit card image filename in [#8074](https://github.com/appwrite/appwrite/pull/8074)
|
||||
* Fix Deprecated Warning in Doctor.php in [#8105](https://github.com/appwrite/appwrite/pull/8105)
|
||||
* Set limit to retrieve all stats for the usage range in [#8117](https://github.com/appwrite/appwrite/pull/8117)
|
||||
* Fix email used for name when user is created via Apple OAuth2 in [#8102](https://github.com/appwrite/appwrite/pull/8102)
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
* Add GitHub action to close stale issues in [#7927](https://github.com/appwrite/appwrite/pull/7927)
|
||||
* Document the standard we follow for country codes in [#8014](https://github.com/appwrite/appwrite/pull/8014)
|
||||
* Add OSV Scanner for vulnerability scans in [#6506](https://github.com/appwrite/appwrite/pull/6506)
|
||||
* Fix stale action close reason in [#8046](https://github.com/appwrite/appwrite/pull/8046)
|
||||
* Add OSV Scanner for vulnerability scans in [#8021](https://github.com/appwrite/appwrite/pull/8021)
|
||||
* Fix some typos in comments in [#7993](https://github.com/appwrite/appwrite/pull/7993)
|
||||
* Replace missing domain paths in README.md in [#8049](https://github.com/appwrite/appwrite/pull/8049)
|
||||
* Add the React Native SDK in [#7776](https://github.com/appwrite/appwrite/pull/7776)
|
||||
* Bump database in [#8080](https://github.com/appwrite/appwrite/pull/8080)
|
||||
* Add documentation for metrics in [#8088](https://github.com/appwrite/appwrite/pull/8088)
|
||||
* Add new country Palestine with its translations in [#8031](https://github.com/appwrite/appwrite/pull/8031)
|
||||
* Update users create token description in [#8129](https://github.com/appwrite/appwrite/pull/8129)
|
||||
* Bump dependencies in [#8130](https://github.com/appwrite/appwrite/pull/8130)
|
||||
|
||||
# Version 1.5.5
|
||||
## What's Changed
|
||||
### Notable changes
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ docker run -it --rm \
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
|
||||
--entrypoint="install" \
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
|
@ -79,7 +79,7 @@ docker run -it --rm ^
|
|||
--volume //var/run/docker.sock:/var/run/docker.sock ^
|
||||
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
|
||||
--entrypoint="install" ^
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
#### PowerShell
|
||||
|
|
@ -89,7 +89,7 @@ docker run -it --rm `
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock `
|
||||
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
|
||||
--entrypoint="install" `
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
运行后,可以在浏览器上访问 http://localhost 找到 Appwrite 控制台。在非 Linux 的本机主机上完成安装后,服务器可能需要几分钟才能启动。
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ docker run -it --rm \
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
|
||||
--entrypoint="install" \
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
|
@ -87,7 +87,7 @@ docker run -it --rm ^
|
|||
--volume //var/run/docker.sock:/var/run/docker.sock ^
|
||||
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
|
||||
--entrypoint="install" ^
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
#### PowerShell
|
||||
|
|
@ -97,7 +97,7 @@ docker run -it --rm `
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock `
|
||||
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
|
||||
--entrypoint="install" `
|
||||
appwrite/appwrite:1.5.5
|
||||
appwrite/appwrite:1.5.6
|
||||
```
|
||||
|
||||
Once the Docker installation is complete, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after completing the installation.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
|
||||
<tr>
|
||||
<td align="center" style="border-radius: 8px; background-color: #ffffff;">
|
||||
<p style="font-size: 24px; text-indent: 18px; letter-spacing: 18px; font-family: Inter; color: #414146; text-decoration: none; border-radius: 8px; padding: 24px 12px; border: 1px solid #EDEDF0; display: inline-block; font-weight: bold; ">{{otp}}</p>
|
||||
<p style="font-size: 24px; text-indent: 18px; letter-spacing: 18px; font-family: 'Inter', sans-serif; color: #414146; text-decoration: none; border-radius: 8px; padding: 24px 12px; border: 1px solid #EDEDF0; display: inline-block; font-weight: bold; ">{{otp}}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ return [
|
|||
[
|
||||
'key' => 'web',
|
||||
'name' => 'Web',
|
||||
'version' => '14.0.0',
|
||||
'version' => '14.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-web',
|
||||
'package' => 'https://www.npmjs.com/package/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -63,7 +63,7 @@ return [
|
|||
[
|
||||
'key' => 'flutter',
|
||||
'name' => 'Flutter',
|
||||
'version' => '12.0.3',
|
||||
'version' => '12.0.4',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-flutter',
|
||||
'package' => 'https://pub.dev/packages/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -81,7 +81,7 @@ return [
|
|||
[
|
||||
'key' => 'apple',
|
||||
'name' => 'Apple',
|
||||
'version' => '5.0.0',
|
||||
'version' => '6.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-apple',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-apple',
|
||||
'enabled' => true,
|
||||
|
|
@ -116,7 +116,7 @@ return [
|
|||
[
|
||||
'key' => 'android',
|
||||
'name' => 'Android',
|
||||
'version' => '5.0.0',
|
||||
'version' => '5.1.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-android',
|
||||
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-android',
|
||||
'enabled' => true,
|
||||
|
|
@ -135,6 +135,24 @@ return [
|
|||
'Java' => 'java',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'react-native',
|
||||
'name' => 'React Native',
|
||||
'version' => '0.3.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-react-native',
|
||||
'package' => 'https://npmjs.com/package/react-native-appwrite',
|
||||
'enabled' => true,
|
||||
'beta' => true,
|
||||
'dev' => false,
|
||||
'hidden' => false,
|
||||
'family' => APP_PLATFORM_CLIENT,
|
||||
'prism' => 'javascript',
|
||||
'source' => \realpath(__DIR__ . '/../sdks/client-react-native'),
|
||||
'gitUrl' => 'git@github.com:appwrite/sdk-for-react-native.git',
|
||||
'gitRepoName' => 'sdk-for-react-native',
|
||||
'gitUserName' => 'appwrite',
|
||||
'gitBranch' => 'dev',
|
||||
],
|
||||
[
|
||||
'key' => 'graphql',
|
||||
'name' => 'GraphQL',
|
||||
|
|
@ -185,7 +203,7 @@ return [
|
|||
[
|
||||
'key' => 'web',
|
||||
'name' => 'Console',
|
||||
'version' => '0.6.1',
|
||||
'version' => '0.6.3',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-console',
|
||||
'package' => '',
|
||||
'enabled' => true,
|
||||
|
|
@ -203,7 +221,7 @@ return [
|
|||
[
|
||||
'key' => 'cli',
|
||||
'name' => 'Command Line',
|
||||
'version' => '5.0.2',
|
||||
'version' => '5.0.5',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-cli',
|
||||
'package' => 'https://www.npmjs.com/package/appwrite-cli',
|
||||
'enabled' => true,
|
||||
|
|
@ -231,7 +249,7 @@ return [
|
|||
[
|
||||
'key' => 'nodejs',
|
||||
'name' => 'Node.js',
|
||||
'version' => '12.0.1',
|
||||
'version' => '13.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-node',
|
||||
'package' => 'https://www.npmjs.com/package/node-appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -249,7 +267,7 @@ return [
|
|||
[
|
||||
'key' => 'deno',
|
||||
'name' => 'Deno',
|
||||
'version' => '10.0.1',
|
||||
'version' => '10.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-deno',
|
||||
'package' => 'https://deno.land/x/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -267,7 +285,7 @@ return [
|
|||
[
|
||||
'key' => 'php',
|
||||
'name' => 'PHP',
|
||||
'version' => '11.0.1',
|
||||
'version' => '11.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-php',
|
||||
'package' => 'https://packagist.org/packages/appwrite/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -285,7 +303,7 @@ return [
|
|||
[
|
||||
'key' => 'python',
|
||||
'name' => 'Python',
|
||||
'version' => '5.0.2',
|
||||
'version' => '5.0.3',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-python',
|
||||
'package' => 'https://pypi.org/project/appwrite/',
|
||||
'enabled' => true,
|
||||
|
|
@ -303,7 +321,7 @@ return [
|
|||
[
|
||||
'key' => 'ruby',
|
||||
'name' => 'Ruby',
|
||||
'version' => '11.0.1',
|
||||
'version' => '11.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-ruby',
|
||||
'package' => 'https://rubygems.org/gems/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -321,7 +339,7 @@ return [
|
|||
[
|
||||
'key' => 'go',
|
||||
'name' => 'Go',
|
||||
'version' => '4.0.0',
|
||||
'version' => '4.0.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-go',
|
||||
'package' => '',
|
||||
'enabled' => false,
|
||||
|
|
@ -339,7 +357,7 @@ return [
|
|||
[
|
||||
'key' => 'java',
|
||||
'name' => 'Java',
|
||||
'version' => '4.0.1',
|
||||
'version' => '4.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-java',
|
||||
'package' => '',
|
||||
'enabled' => false,
|
||||
|
|
@ -357,7 +375,7 @@ return [
|
|||
[
|
||||
'key' => 'dotnet',
|
||||
'name' => '.NET',
|
||||
'version' => '0.8.1',
|
||||
'version' => '0.8.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-dotnet',
|
||||
'package' => 'https://www.nuget.org/packages/Appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -375,7 +393,7 @@ return [
|
|||
[
|
||||
'key' => 'dart',
|
||||
'name' => 'Dart',
|
||||
'version' => '11.0.2',
|
||||
'version' => '11.0.3',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-dart',
|
||||
'package' => 'https://pub.dev/packages/dart_appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -393,7 +411,7 @@ return [
|
|||
[
|
||||
'key' => 'kotlin',
|
||||
'name' => 'Kotlin',
|
||||
'version' => '5.0.1',
|
||||
'version' => '5.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-kotlin',
|
||||
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin',
|
||||
'enabled' => true,
|
||||
|
|
@ -415,7 +433,7 @@ return [
|
|||
[
|
||||
'key' => 'swift',
|
||||
'name' => 'Swift',
|
||||
'version' => '5.0.1',
|
||||
'version' => '5.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'enabled' => true,
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
Subproject commit f483d9631d6f21e94aedb20b5c37c56fea06c23e
|
||||
Subproject commit d75187458097a20b9e693079b16cb3f25933d31c
|
||||
|
|
@ -1070,17 +1070,15 @@ App::get('/v1/account/sessions/oauth2/callback/:provider/:projectId')
|
|||
$domain = $request->getHostname();
|
||||
$protocol = $request->getProtocol();
|
||||
|
||||
$params = $request->getParams();
|
||||
$params['project'] = $projectId;
|
||||
unset($params['projectId']);
|
||||
|
||||
$response
|
||||
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
|
||||
->addHeader('Pragma', 'no-cache')
|
||||
->redirect($protocol . '://' . $domain . '/v1/account/sessions/oauth2/' . $provider . '/redirect?'
|
||||
. \http_build_query([
|
||||
'project' => $projectId,
|
||||
'code' => $code,
|
||||
'state' => $state,
|
||||
'error' => $error,
|
||||
'error_description' => $error_description
|
||||
]));
|
||||
. \http_build_query($params));
|
||||
});
|
||||
|
||||
App::post('/v1/account/sessions/oauth2/callback/:provider/:projectId')
|
||||
|
|
@ -1103,17 +1101,15 @@ App::post('/v1/account/sessions/oauth2/callback/:provider/:projectId')
|
|||
$domain = $request->getHostname();
|
||||
$protocol = $request->getProtocol();
|
||||
|
||||
$params = $request->getParams();
|
||||
$params['project'] = $projectId;
|
||||
unset($params['projectId']);
|
||||
|
||||
$response
|
||||
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
|
||||
->addHeader('Pragma', 'no-cache')
|
||||
->redirect($protocol . '://' . $domain . '/v1/account/sessions/oauth2/' . $provider . '/redirect?'
|
||||
. \http_build_query([
|
||||
'project' => $projectId,
|
||||
'code' => $code,
|
||||
'state' => $state,
|
||||
'error' => $error,
|
||||
'error_description' => $error_description
|
||||
]));
|
||||
. \http_build_query($params));
|
||||
});
|
||||
|
||||
App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
||||
|
|
@ -1240,7 +1236,17 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
$failureRedirect(Exception::USER_MISSING_ID);
|
||||
}
|
||||
|
||||
$name = $oauth2->getUserName($accessToken);
|
||||
$name = '';
|
||||
$nameOAuth = $oauth2->getUserName($accessToken);
|
||||
$userParam = \json_decode($request->getParam('user'), true);
|
||||
if (!empty($nameOAuth)) {
|
||||
$name = $nameOAuth;
|
||||
} elseif (is_array($userParam)) {
|
||||
$nameParam = $userParam['name'];
|
||||
if (is_array($nameParam) && isset($nameParam['firstName']) && isset($nameParam['lastName'])) {
|
||||
$name = $nameParam['firstName'] . ' ' . $nameParam['lastName'];
|
||||
}
|
||||
}
|
||||
$email = $oauth2->getUserEmail($accessToken);
|
||||
|
||||
// Check if this identity is connected to a different user
|
||||
|
|
@ -3496,14 +3502,33 @@ App::patch('/v1/account/mfa')
|
|||
->inject('requestTimestamp')
|
||||
->inject('response')
|
||||
->inject('user')
|
||||
->inject('session')
|
||||
->inject('dbForProject')
|
||||
->inject('queueForEvents')
|
||||
->action(function (bool $mfa, ?\DateTime $requestTimestamp, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||
->action(function (bool $mfa, ?\DateTime $requestTimestamp, Response $response, Document $user, Document $session, Database $dbForProject, Event $queueForEvents) {
|
||||
|
||||
$user->setAttribute('mfa', $mfa);
|
||||
|
||||
$user = $dbForProject->withRequestTimestamp($requestTimestamp, fn () => $dbForProject->updateDocument('users', $user->getId(), $user));
|
||||
|
||||
if ($mfa) {
|
||||
$factors = $session->getAttribute('factors', []);
|
||||
$totp = TOTP::getAuthenticatorFromUser($user);
|
||||
if ($totp !== null && $totp->getAttribute('verified', false)) {
|
||||
$factors[] = Type::TOTP;
|
||||
}
|
||||
if ($user->getAttribute('email', false) && $user->getAttribute('emailVerification', false)) {
|
||||
$factors[] = Type::EMAIL;
|
||||
}
|
||||
if ($user->getAttribute('phone', false) && $user->getAttribute('phoneVerification', false)) {
|
||||
$factors[] = Type::PHONE;
|
||||
}
|
||||
$factors = \array_unique($factors);
|
||||
|
||||
$session->setAttribute('factors', $factors);
|
||||
$dbForProject->updateDocument('sessions', $session->getId(), $session);
|
||||
}
|
||||
|
||||
$queueForEvents->setParam('userId', $user->getId());
|
||||
|
||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||
|
|
@ -3634,10 +3659,10 @@ App::put('/v1/account/mfa/authenticators/:type')
|
|||
->param('otp', '', new Text(256), 'Valid verification token.')
|
||||
->inject('response')
|
||||
->inject('user')
|
||||
->inject('project')
|
||||
->inject('session')
|
||||
->inject('dbForProject')
|
||||
->inject('queueForEvents')
|
||||
->action(function (string $type, string $otp, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents) {
|
||||
->action(function (string $type, string $otp, Response $response, Document $user, Document $session, Database $dbForProject, Event $queueForEvents) {
|
||||
|
||||
$authenticator = (match ($type) {
|
||||
Type::TOTP => TOTP::getAuthenticatorFromUser($user),
|
||||
|
|
@ -3666,10 +3691,12 @@ App::put('/v1/account/mfa/authenticators/:type')
|
|||
$dbForProject->updateDocument('authenticators', $authenticator->getId(), $authenticator);
|
||||
$dbForProject->purgeCachedDocument('users', $user->getId());
|
||||
|
||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
$sessionId = Auth::sessionVerify($user->getAttribute('sessions', []), Auth::$secret, $authDuration);
|
||||
$session = $dbForProject->getDocument('sessions', $sessionId);
|
||||
$dbForProject->updateDocument('sessions', $sessionId, $session->setAttribute('factors', $type, Document::SET_TYPE_APPEND));
|
||||
$factors = $session->getAttribute('factors', []);
|
||||
$factors[] = $type;
|
||||
$factors = \array_unique($factors);
|
||||
|
||||
$session->setAttribute('factors', $factors);
|
||||
$dbForProject->updateDocument('sessions', $session->getId(), $session);
|
||||
|
||||
$queueForEvents->setParam('userId', $user->getId());
|
||||
|
||||
|
|
@ -4058,9 +4085,10 @@ App::put('/v1/account/mfa/challenge')
|
|||
->inject('project')
|
||||
->inject('response')
|
||||
->inject('user')
|
||||
->inject('session')
|
||||
->inject('dbForProject')
|
||||
->inject('queueForEvents')
|
||||
->action(function (string $challengeId, string $otp, Document $project, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||
->action(function (string $challengeId, string $otp, Document $project, Response $response, Document $user, Document $session, Database $dbForProject, Event $queueForEvents) {
|
||||
|
||||
$challenge = $dbForProject->getDocument('challenges', $challengeId);
|
||||
|
||||
|
|
@ -4106,15 +4134,15 @@ App::put('/v1/account/mfa/challenge')
|
|||
$dbForProject->deleteDocument('challenges', $challengeId);
|
||||
$dbForProject->purgeCachedDocument('users', $user->getId());
|
||||
|
||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
$sessionId = Auth::sessionVerify($user->getAttribute('sessions', []), Auth::$secret, $authDuration);
|
||||
$session = $dbForProject->getDocument('sessions', $sessionId);
|
||||
$factors = $session->getAttribute('factors', []);
|
||||
$factors[] = $type;
|
||||
$factors = \array_unique($factors);
|
||||
|
||||
$session = $session
|
||||
->setAttribute('factors', $type, Document::SET_TYPE_APPEND)
|
||||
$session
|
||||
->setAttribute('factors', $factors)
|
||||
->setAttribute('mfaUpdatedAt', DateTime::now());
|
||||
|
||||
$dbForProject->updateDocument('sessions', $sessionId, $session);
|
||||
$dbForProject->updateDocument('sessions', $session->getId(), $session);
|
||||
|
||||
$queueForEvents
|
||||
->setParam('userId', $user->getId())
|
||||
|
|
|
|||
|
|
@ -1753,9 +1753,6 @@ App::post('/v1/functions/:functionId/executions')
|
|||
Console::error($th->getMessage());
|
||||
|
||||
if ($th instanceof AppwriteException) {
|
||||
if ($function->getAttribute('logging')) {
|
||||
Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
}
|
||||
throw $th;
|
||||
}
|
||||
} finally {
|
||||
|
|
@ -1765,11 +1762,11 @@ App::post('/v1/functions/:functionId/executions')
|
|||
->addMetric(METRIC_EXECUTIONS_COMPUTE, (int)($execution->getAttribute('duration') * 1000)) // per project
|
||||
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE), (int)($execution->getAttribute('duration') * 1000)) // per function
|
||||
;
|
||||
}
|
||||
|
||||
if ($function->getAttribute('logging')) {
|
||||
/** @var Document $execution */
|
||||
$execution = Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
if ($function->getAttribute('logging')) {
|
||||
/** @var Document $execution */
|
||||
$execution = Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
}
|
||||
}
|
||||
|
||||
$roles = Authorization::getRoles();
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ App::get('/v1/project/usage')
|
|||
'1d' => 'Y-m-d\T00:00:00.000P',
|
||||
};
|
||||
|
||||
Authorization::skip(function () use ($dbForProject, $firstDay, $lastDay, $period, $metrics, &$total, &$stats) {
|
||||
Authorization::skip(function () use ($dbForProject, $firstDay, $lastDay, $period, $metrics, $limit, &$total, &$stats) {
|
||||
foreach ($metrics['total'] as $metric) {
|
||||
$result = $dbForProject->findOne('stats', [
|
||||
Query::equal('metric', [$metric]),
|
||||
|
|
@ -85,6 +85,7 @@ App::get('/v1/project/usage')
|
|||
Query::equal('period', [$period]),
|
||||
Query::greaterThanEqual('time', $firstDay),
|
||||
Query::lessThan('time', $lastDay),
|
||||
Query::limit($limit),
|
||||
Query::orderDesc('time'),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -300,9 +300,6 @@ function router(App $utopia, Database $dbForConsole, callable $getProjectDB, Swo
|
|||
Console::error($th->getMessage());
|
||||
|
||||
if ($th instanceof AppwriteException) {
|
||||
if ($function->getAttribute('logging')) {
|
||||
Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
}
|
||||
throw $th;
|
||||
}
|
||||
} finally {
|
||||
|
|
@ -312,11 +309,11 @@ function router(App $utopia, Database $dbForConsole, callable $getProjectDB, Swo
|
|||
->addMetric(METRIC_EXECUTIONS_COMPUTE, (int)($execution->getAttribute('duration') * 1000)) // per project
|
||||
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE), (int)($execution->getAttribute('duration') * 1000)) // per function
|
||||
;
|
||||
}
|
||||
|
||||
if ($function->getAttribute('logging')) {
|
||||
/** @var Document $execution */
|
||||
$execution = Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
if ($function->getAttribute('logging')) {
|
||||
/** @var Document $execution */
|
||||
$execution = Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
|
||||
}
|
||||
}
|
||||
|
||||
$execution->setAttribute('logs', '');
|
||||
|
|
@ -750,12 +747,12 @@ App::error()
|
|||
'file' => $file,
|
||||
'line' => $line,
|
||||
'trace' => \json_encode($trace, JSON_UNESCAPED_UNICODE) === false ? [] : $trace, // check for failing encode
|
||||
'version' => $version,
|
||||
'version' => APP_VERSION_STABLE,
|
||||
'type' => $type,
|
||||
] : [
|
||||
'message' => $message,
|
||||
'code' => $code,
|
||||
'version' => $version,
|
||||
'version' => APP_VERSION_STABLE,
|
||||
'type' => $type,
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -411,7 +411,7 @@ App::init()
|
|||
|
||||
$useCache = $route->getLabel('cache', false);
|
||||
if ($useCache) {
|
||||
$key = md5($request->getURI() . implode('*', $request->getParams()) . '*' . APP_CACHE_BUSTER);
|
||||
$key = md5($request->getURI() . '*' . implode('*', $request->getParams()) . '*' . APP_CACHE_BUSTER);
|
||||
$cacheLog = Authorization::skip(fn () => $dbForProject->getDocument('cache', $key));
|
||||
$cache = new Cache(
|
||||
new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId())
|
||||
|
|
@ -666,7 +666,7 @@ App::shutdown()
|
|||
$resourceType = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
||||
}
|
||||
|
||||
$key = md5($request->getURI() . '*' . implode('*', $request->getParams())) . '*' . APP_CACHE_BUSTER;
|
||||
$key = md5($request->getURI() . '*' . implode('*', $request->getParams()) . '*' . APP_CACHE_BUSTER);
|
||||
$signature = md5($data['payload']);
|
||||
$cacheLog = Authorization::skip(fn () => $dbForProject->getDocument('cache', $key));
|
||||
$accessedAt = $cacheLog->getAttribute('accessedAt', '');
|
||||
|
|
|
|||
11
app/init.php
11
app/init.php
|
|
@ -112,8 +112,8 @@ const APP_LIMIT_LIST_DEFAULT = 25; // Default maximum number of items to return
|
|||
const APP_KEY_ACCCESS = 24 * 60 * 60; // 24 hours
|
||||
const APP_USER_ACCCESS = 24 * 60 * 60; // 24 hours
|
||||
const APP_CACHE_UPDATE = 24 * 60 * 60; // 24 hours
|
||||
const APP_CACHE_BUSTER = 406;
|
||||
const APP_VERSION_STABLE = '1.5.5';
|
||||
const APP_CACHE_BUSTER = 432;
|
||||
const APP_VERSION_STABLE = '1.5.6';
|
||||
const APP_DATABASE_ATTRIBUTE_EMAIL = 'email';
|
||||
const APP_DATABASE_ATTRIBUTE_ENUM = 'enum';
|
||||
const APP_DATABASE_ATTRIBUTE_IP = 'ip';
|
||||
|
|
@ -1239,14 +1239,13 @@ App::setResource('project', function ($dbForConsole, $request, $console) {
|
|||
return $project;
|
||||
}, ['dbForConsole', 'request', 'console']);
|
||||
|
||||
App::setResource('session', function (Document $user, Document $project) {
|
||||
App::setResource('session', function (Document $user) {
|
||||
if ($user->isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$sessions = $user->getAttribute('sessions', []);
|
||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
$sessionId = Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration);
|
||||
$sessionId = Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret);
|
||||
|
||||
if (!$sessionId) {
|
||||
return;
|
||||
|
|
@ -1259,7 +1258,7 @@ App::setResource('session', function (Document $user, Document $project) {
|
|||
}
|
||||
|
||||
return;
|
||||
}, ['user', 'project']);
|
||||
}, ['user']);
|
||||
|
||||
App::setResource('console', function () {
|
||||
return new Document([
|
||||
|
|
|
|||
|
|
@ -44,13 +44,13 @@
|
|||
"ext-sockets": "*",
|
||||
"appwrite/php-runtimes": "0.13.*",
|
||||
"appwrite/php-clamav": "2.0.*",
|
||||
"utopia-php/abuse": "0.36.*",
|
||||
"utopia-php/abuse": "0.37.*",
|
||||
"utopia-php/analytics": "0.10.*",
|
||||
"utopia-php/audit": "0.38.*",
|
||||
"utopia-php/audit": "0.39.*",
|
||||
"utopia-php/cache": "0.9.*",
|
||||
"utopia-php/cli": "0.15.*",
|
||||
"utopia-php/config": "0.2.*",
|
||||
"utopia-php/database": "0.48.*",
|
||||
"utopia-php/database": "0.49.*",
|
||||
"utopia-php/domains": "0.5.*",
|
||||
"utopia-php/dsn": "0.2.*",
|
||||
"utopia-php/framework": "0.33.*",
|
||||
|
|
|
|||
42
composer.lock
generated
42
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "3f703f77225d4022cd5823814ab7c3e7",
|
||||
"content-hash": "ddce40668e20709ace22219623303e38",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adhocore/jwt",
|
||||
|
|
@ -1264,23 +1264,23 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/abuse",
|
||||
"version": "0.36.0",
|
||||
"version": "0.37.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/abuse.git",
|
||||
"reference": "d3d09b4fa0db75935110714ad4b2a87f3ace31ed"
|
||||
"reference": "2de5c12886cbd516e511e559afdd9e615d871062"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/abuse/zipball/d3d09b4fa0db75935110714ad4b2a87f3ace31ed",
|
||||
"reference": "d3d09b4fa0db75935110714ad4b2a87f3ace31ed",
|
||||
"url": "https://api.github.com/repos/utopia-php/abuse/zipball/2de5c12886cbd516e511e559afdd9e615d871062",
|
||||
"reference": "2de5c12886cbd516e511e559afdd9e615d871062",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"ext-pdo": "*",
|
||||
"php": ">=8.0",
|
||||
"utopia-php/database": "0.48.*"
|
||||
"utopia-php/database": "0.49.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/pint": "1.5.*",
|
||||
|
|
@ -1307,9 +1307,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/abuse/issues",
|
||||
"source": "https://github.com/utopia-php/abuse/tree/0.36.0"
|
||||
"source": "https://github.com/utopia-php/abuse/tree/0.37.0"
|
||||
},
|
||||
"time": "2024-01-19T09:32:56+00:00"
|
||||
"time": "2024-03-06T21:20:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/analytics",
|
||||
|
|
@ -1359,21 +1359,21 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/audit",
|
||||
"version": "0.38.0",
|
||||
"version": "0.39.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/audit.git",
|
||||
"reference": "a9067f4af76e8787f1d29850a8ec94fc32bb6539"
|
||||
"reference": "f0bc15012e05cc0b9dde012ab27d25f193768a2c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/audit/zipball/a9067f4af76e8787f1d29850a8ec94fc32bb6539",
|
||||
"reference": "a9067f4af76e8787f1d29850a8ec94fc32bb6539",
|
||||
"url": "https://api.github.com/repos/utopia-php/audit/zipball/f0bc15012e05cc0b9dde012ab27d25f193768a2c",
|
||||
"reference": "f0bc15012e05cc0b9dde012ab27d25f193768a2c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.0",
|
||||
"utopia-php/database": "0.48.*"
|
||||
"utopia-php/database": "0.49.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/pint": "1.5.*",
|
||||
|
|
@ -1400,9 +1400,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/audit/issues",
|
||||
"source": "https://github.com/utopia-php/audit/tree/0.38.0"
|
||||
"source": "https://github.com/utopia-php/audit/tree/0.39.0"
|
||||
},
|
||||
"time": "2024-01-19T09:33:05+00:00"
|
||||
"time": "2024-03-06T21:20:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/cache",
|
||||
|
|
@ -1556,16 +1556,16 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/database",
|
||||
"version": "0.48.4",
|
||||
"version": "0.49.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/database.git",
|
||||
"reference": "02f20bd901b8fab26d7dc2c58f7da1d6a08d21c0"
|
||||
"reference": "216209121bc97a2010f67a39c561fafe1e936bec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/database/zipball/02f20bd901b8fab26d7dc2c58f7da1d6a08d21c0",
|
||||
"reference": "02f20bd901b8fab26d7dc2c58f7da1d6a08d21c0",
|
||||
"url": "https://api.github.com/repos/utopia-php/database/zipball/216209121bc97a2010f67a39c561fafe1e936bec",
|
||||
"reference": "216209121bc97a2010f67a39c561fafe1e936bec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -1606,9 +1606,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/database/issues",
|
||||
"source": "https://github.com/utopia-php/database/tree/0.48.4"
|
||||
"source": "https://github.com/utopia-php/database/tree/0.49.10"
|
||||
},
|
||||
"time": "2024-02-23T03:22:55+00:00"
|
||||
"time": "2024-05-20T02:14:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/domains",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ let client = Client()
|
|||
|
||||
let account = Account(client)
|
||||
|
||||
let user = try await account.deleteMfaAuthenticator(
|
||||
let result = try await account.deleteMfaAuthenticator(
|
||||
type: .totp,
|
||||
otp: "<OTP>"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ mutation {
|
|||
accountCreateAnonymousSession {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ mutation {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ mutation {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -3,35 +3,6 @@ mutation {
|
|||
type: "totp",
|
||||
otp: "<OTP>"
|
||||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
name
|
||||
password
|
||||
hash
|
||||
hashOptions
|
||||
registration
|
||||
status
|
||||
labels
|
||||
passwordUpdate
|
||||
email
|
||||
phone
|
||||
emailVerification
|
||||
phoneVerification
|
||||
mfa
|
||||
prefs {
|
||||
data
|
||||
}
|
||||
targets {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
name
|
||||
userId
|
||||
providerId
|
||||
providerType
|
||||
identifier
|
||||
}
|
||||
accessedAt
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ query {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -3,5 +3,6 @@ query {
|
|||
totp
|
||||
phone
|
||||
email
|
||||
recoveryCode
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ query {
|
|||
sessions {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ mutation {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ mutation {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ mutation {
|
|||
) {
|
||||
_id
|
||||
_createdAt
|
||||
_updatedAt
|
||||
userId
|
||||
expire
|
||||
provider
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createAnonymousSession();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createEmailPasswordSession(
|
||||
'email@example.com', // email
|
||||
'password' // password
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createEmailToken(
|
||||
'<USER_ID>', // userId
|
||||
'email@example.com', // email
|
||||
false // phrase (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createJWT();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createMagicURLToken(
|
||||
'<USER_ID>', // userId
|
||||
'email@example.com', // email
|
||||
'https://example.com', // url (optional)
|
||||
false // phrase (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account, AuthenticatorType } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createMfaAuthenticator(
|
||||
AuthenticatorType.Totp // type
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account, AuthenticationFactor } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createMfaChallenge(
|
||||
AuthenticationFactor.Email // factor
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createMfaRecoveryCodes();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Account, OAuthProvider } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
account.createOAuth2Session(
|
||||
OAuthProvider.Amazon, // provider
|
||||
'https://example.com', // success (optional)
|
||||
'https://example.com', // failure (optional)
|
||||
[] // scopes (optional)
|
||||
);
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Account, OAuthProvider } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
account.createOAuth2Token(
|
||||
OAuthProvider.Amazon, // provider
|
||||
'https://example.com', // success (optional)
|
||||
'https://example.com', // failure (optional)
|
||||
[] // scopes (optional)
|
||||
);
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createPhoneToken(
|
||||
'<USER_ID>', // userId
|
||||
'+12065550100' // phone
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createPhoneVerification();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createPushTarget(
|
||||
'<TARGET_ID>', // targetId
|
||||
'<IDENTIFIER>', // identifier
|
||||
'<PROVIDER_ID>' // providerId (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createRecovery(
|
||||
'email@example.com', // email
|
||||
'https://example.com' // url
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createSession(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>' // secret
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.createVerification(
|
||||
'https://example.com' // url
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.create(
|
||||
'<USER_ID>', // userId
|
||||
'email@example.com', // email
|
||||
'', // password
|
||||
'<NAME>' // name (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.deleteIdentity(
|
||||
'<IDENTITY_ID>' // identityId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account, AuthenticatorType } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.deleteMfaAuthenticator(
|
||||
AuthenticatorType.Totp, // type
|
||||
'<OTP>' // otp
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.deletePushTarget(
|
||||
'<TARGET_ID>' // targetId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.deleteSession(
|
||||
'<SESSION_ID>' // sessionId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.deleteSessions();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.getMfaRecoveryCodes();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.getPrefs();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.getSession(
|
||||
'<SESSION_ID>' // sessionId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.get();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.listIdentities(
|
||||
[] // queries (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.listLogs(
|
||||
[] // queries (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.listMfaFactors();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.listSessions();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateEmail(
|
||||
'email@example.com', // email
|
||||
'password' // password
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateMFA(
|
||||
false // mfa
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateMagicURLSession(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>' // secret
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account, AuthenticatorType } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateMfaAuthenticator(
|
||||
AuthenticatorType.Totp, // type
|
||||
'<OTP>' // otp
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateMfaChallenge(
|
||||
'<CHALLENGE_ID>', // challengeId
|
||||
'<OTP>' // otp
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateMfaRecoveryCodes();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateName(
|
||||
'<NAME>' // name
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePassword(
|
||||
'', // password
|
||||
'password' // oldPassword (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePhoneSession(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>' // secret
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePhoneVerification(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>' // secret
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePhone(
|
||||
'+12065550100', // phone
|
||||
'password' // password
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePrefs(
|
||||
{} // prefs
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updatePushTarget(
|
||||
'<TARGET_ID>', // targetId
|
||||
'<IDENTIFIER>' // identifier
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateRecovery(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>', // secret
|
||||
'' // password
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateSession(
|
||||
'<SESSION_ID>' // sessionId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateStatus();
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Account } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
const result = await account.updateVerification(
|
||||
'<USER_ID>', // userId
|
||||
'<SECRET>' // secret
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Avatars, Browser } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getBrowser(
|
||||
Browser.AvantBrowser, // code
|
||||
0, // width (optional)
|
||||
0, // height (optional)
|
||||
0 // quality (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Avatars, CreditCard } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getCreditCard(
|
||||
CreditCard.AmericanExpress, // code
|
||||
0, // width (optional)
|
||||
0, // height (optional)
|
||||
0 // quality (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Client, Avatars } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getFavicon(
|
||||
'https://example.com' // url
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Avatars, Flag } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getFlag(
|
||||
Flag.Afghanistan, // code
|
||||
0, // width (optional)
|
||||
0, // height (optional)
|
||||
0 // quality (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Avatars } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getImage(
|
||||
'https://example.com', // url
|
||||
0, // width (optional)
|
||||
0 // height (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Avatars } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getInitials(
|
||||
'<NAME>', // name (optional)
|
||||
0, // width (optional)
|
||||
0, // height (optional)
|
||||
'' // background (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Avatars } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const avatars = new Avatars(client);
|
||||
|
||||
const result = avatars.getQR(
|
||||
'<TEXT>', // text
|
||||
1, // size (optional)
|
||||
0, // margin (optional)
|
||||
false // download (optional)
|
||||
);
|
||||
|
||||
console.log(result);
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { Client, Databases } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
const result = await databases.createDocument(
|
||||
'<DATABASE_ID>', // databaseId
|
||||
'<COLLECTION_ID>', // collectionId
|
||||
'<DOCUMENT_ID>', // documentId
|
||||
{}, // data
|
||||
["read("any")"] // permissions (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Databases } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
const result = await databases.deleteDocument(
|
||||
'<DATABASE_ID>', // databaseId
|
||||
'<COLLECTION_ID>', // collectionId
|
||||
'<DOCUMENT_ID>' // documentId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { Client, Databases } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
const result = await databases.getDocument(
|
||||
'<DATABASE_ID>', // databaseId
|
||||
'<COLLECTION_ID>', // collectionId
|
||||
'<DOCUMENT_ID>', // documentId
|
||||
[] // queries (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Databases } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
const result = await databases.listDocuments(
|
||||
'<DATABASE_ID>', // databaseId
|
||||
'<COLLECTION_ID>', // collectionId
|
||||
[] // queries (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { Client, Databases } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
const result = await databases.updateDocument(
|
||||
'<DATABASE_ID>', // databaseId
|
||||
'<COLLECTION_ID>', // collectionId
|
||||
'<DOCUMENT_ID>', // documentId
|
||||
{}, // data (optional)
|
||||
["read("any")"] // permissions (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
import { Client, Functions, ExecutionMethod } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const functions = new Functions(client);
|
||||
|
||||
const result = await functions.createExecution(
|
||||
'<FUNCTION_ID>', // functionId
|
||||
'<BODY>', // body (optional)
|
||||
false, // async (optional)
|
||||
'<PATH>', // path (optional)
|
||||
ExecutionMethod.GET, // method (optional)
|
||||
{} // headers (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { Client, Functions } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const functions = new Functions(client);
|
||||
|
||||
const result = await functions.getExecution(
|
||||
'<FUNCTION_ID>', // functionId
|
||||
'<EXECUTION_ID>' // executionId
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { Client, Functions } from "react-native-appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('5df5acd0d48c2'); // Your project ID
|
||||
|
||||
const functions = new Functions(client);
|
||||
|
||||
const result = await functions.listExecutions(
|
||||
'<FUNCTION_ID>', // functionId
|
||||
[], // queries (optional)
|
||||
'<SEARCH>' // search (optional)
|
||||
);
|
||||
|
||||
console.log(response);
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue