Changeset View
Changeset View
Standalone View
Standalone View
getting_started/getting_started.md
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | |||||
frameworka potrzebne są jeszcze **config** oraz **manifest** które | frameworka potrzebne są jeszcze **config** oraz **manifest** które | ||||
zostaną przekazane do konstruktora `Sealious.App()`: | zostaną przekazane do konstruktora `Sealious.App()`: | ||||
```js | ```js | ||||
const Sealious = require("sealious"); | const Sealious = require("sealious"); | ||||
const path = require("path"); | const path = require("path"); | ||||
const config = { | const config = { | ||||
datastore_mongo: { | datastore_mongo: { | ||||
port: 27018, | port: 27018, | ||||
}, | }, | ||||
upload_path: path.resolve("./uploaded_files"), | upload_path: path.resolve("./uploaded_files"), | ||||
}; | }; | ||||
const manifest = { | const manifest = { | ||||
name: "What Seal Do?", | name: "What Seal Do?", | ||||
logo: path.resolve(__dirname, "./img/logo.jpg"), | logo: path.resolve(__dirname, "./img/logo.jpg"), | ||||
version: "1.0", | version: "1.0", | ||||
default_language: "pl", | default_language: "pl", | ||||
base_url: "http://localhost:8080", | base_url: "http://localhost:8080", | ||||
admin_email: "mr.seal.api.admin@sealcode.org", | admin_email: "mr.seal.api.admin@sealcode.org", | ||||
}; | }; | ||||
const app = new Sealious.App(config, manifest); | const app = new Sealious.App(config, manifest); | ||||
``` | ``` | ||||
W configu znajdą się wszystkie rzeczy których nie będziemy chcieli | W configu znajdą się wszystkie rzeczy których nie będziemy chcieli | ||||
ujawniać (np. hasła, sekrety, konfiguracja serwera bazy danych), a w | ujawniać (np. hasła, sekrety, konfiguracja serwera bazy danych), a w | ||||
`manifest` rzeczy które będą jawne - jak logo aplikacji, jej nazwa, | `manifest` rzeczy które będą jawne - jak logo aplikacji, jej nazwa, | ||||
autor itp. Nie ma problemu byśmy dodali do `manifest` własne pola! | autor itp. Nie ma problemu byśmy dodali do `manifest` własne pola! | ||||
Więcej informacji o configu oraz manifeście można znaleźć w [w Readme | Więcej informacji o configu oraz manifeście można znaleźć w [w Readme | ||||
Sealiousa](https://hub.sealcode.org/diffusion/SAR/) | Sealiousa](https://hub.sealcode.org/diffusion/SAR/) | ||||
Czas dodać kolekcję! Zrobimy to wykorzystując metodę | Czas dodać kolekcję! Zrobimy to wykorzystując metodę | ||||
`app.createChip()`: | `app.createChip()`: | ||||
```js | ```js | ||||
const tasks = app.createChip(Sealious.Collection, { | const tasks = app.createChip(Sealious.Collection, { | ||||
name: "tasks", | name: "tasks", | ||||
fields: [ | fields: [ | ||||
{ name: "title", type: "text", required: true }, | { name: "title", type: "text", required: true }, | ||||
{ name: "done", type: "boolean", required: true }, | { name: "done", type: "boolean", required: true }, | ||||
], | ], | ||||
access_strategy: { default: "owner", create: "logged_in" }, | access_strategy: { default: "owner", create: "logged_in" }, | ||||
}); | }); | ||||
``` | ``` | ||||
W tym wypadku wykorzystaliśmy `app.createChip(Sealious.Collection, {...kolekcja})`. | W tym wypadku wykorzystaliśmy `app.createChip(Sealious.Collection, {...kolekcja})`. | ||||
`name` określa nazwę kolekcji. | `name` określa nazwę kolekcji. | ||||
`fields` zawiera tablicę z deklaracjami pól które znajdą się w kolekcji. | `fields` zawiera tablicę z deklaracjami pól które znajdą się w kolekcji. | ||||
Show All 28 Lines | |||||
w tym przypadku: dany wpis na liście TODO) miała do niego pełen | w tym przypadku: dany wpis na liście TODO) miała do niego pełen | ||||
dostęp, dodatkowo ustawiamy prawo do tworzenia nowego zasobu każdemu | dostęp, dodatkowo ustawiamy prawo do tworzenia nowego zasobu każdemu | ||||
zalogowanemu użytkownikowi ustawiając klucz `create` na | zalogowanemu użytkownikowi ustawiając klucz `create` na | ||||
**`logged_in`**. Alternatywna deklaracja strategii dostępu bez użycia `default` wyglądałaby następująco: | **`logged_in`**. Alternatywna deklaracja strategii dostępu bez użycia `default` wyglądałaby następująco: | ||||
```js | ```js | ||||
... | ... | ||||
access_strategy: { | access_strategy: { | ||||
edit: "owner", | edit: "owner", | ||||
show: "owner", | show: "owner", | ||||
delete: "owner", | delete: "owner", | ||||
create: "logged_in", | create: "logged_in", | ||||
} | } | ||||
``` | ``` | ||||
Pozostało Nam już tylko odpalić aplikację! Dodajemy do pliku | Pozostało Nam już tylko odpalić aplikację! Dodajemy do pliku | ||||
`index.js`: | `index.js`: | ||||
``` | ``` | ||||
app.start(); | app.start(); | ||||
``` | ``` | ||||
I voilà! Czasz zobaczyć czy wszytko działa: | I voilà! Czasz zobaczyć czy wszytko działa: | ||||
``` | ``` | ||||
> node index.js | > node index.js | ||||
``` | ``` | ||||
Jeśli wszystko poszło dobrze, naszym oczom!powinien ukazać się taki | Jeśli wszystko poszło dobrze, naszym oczom!powinien ukazać się taki | ||||
komunikat z linkiem: | komunikat z linkiem: | ||||
``` | ``` | ||||
... | ... | ||||
15:28:19.570 (1.3s) - warning: Creating an admin account for mr.seal.api.admin@sealcode.org | 15:28:19.570 (1.3s) - warning: Creating an admin account for mr.seal.api.admin@sealcode.org | ||||
15:28:19.616 (1.3s) - info: | 15:28:19.616 (1.3s) - info: | ||||
- message: "Would send an email here" | - message: "Would send an email here" | ||||
- to: "mr.seal.api.admin@sealcode.org" | - to: "mr.seal.api.admin@sealcode.org" | ||||
- subject: {} | - subject: {} | ||||
- text: "Kliknij w poniższy link, aby potwierdzić swój adres email i dokończyć proces zakładania konta\n\n\t* Założ konto: http://localhost:8080/account-creation-details?token=479f64e3-ab4a-417d-a1cd-5ce45aa441ea&email=mr.seal.api.admin@sealcode.org" | - text: "Kliknij w poniższy link, aby potwierdzić swój adres email i dokończyć proces zakładania konta\n\n\t* Założ konto: http://localhost:8080/account-creation-details?token=479f64e3-ab4a-417d-a1cd-5ce45aa441ea&email=mr.seal.api.admin@sealcode.org" | ||||
``` | ``` | ||||
Pod linkiem kryje się strona na której możemy dodać pierwszego | Pod linkiem kryje się strona na której możemy dodać pierwszego | ||||
użytkownika naszego API - administratora. | użytkownika naszego API - administratora. | ||||
Show All 38 Lines | |||||
Obecnie działamy w środowisku developerskim - umożliwia to sprawne | Obecnie działamy w środowisku developerskim - umożliwia to sprawne | ||||
debugowanie i testowanie aplikacji, dlatego mail aktywacyjny | debugowanie i testowanie aplikacji, dlatego mail aktywacyjny | ||||
wyświetli się w konsoli w karcie z działającą aplikacją, tak samo | wyświetli się w konsoli w karcie z działającą aplikacją, tak samo | ||||
jak przy rejestracji konta administratora: | jak przy rejestracji konta administratora: | ||||
``` | ``` | ||||
... | ... | ||||
15:30:34.101 (2m 15.8s) - info: | 15:30:34.101 (2m 15.8s) - info: | ||||
- message: "Would send an email here" | - message: "Would send an email here" | ||||
- to: "seal_user_1@sealcode.org" | - to: "seal_user_1@sealcode.org" | ||||
- subject: {} | - subject: {} | ||||
- text: "Kliknij w poniższy link, aby potwierdzić swój adres email i dokończyć proces zakładania konta\n\n\t* Założ konto: http://localhost:8080/account-creation-details?token=b5b88f6e-8342-40db-abd3-fb2f484199d3&email=seal_user_1@sealcode.org" | - text: "Kliknij w poniższy link, aby potwierdzić swój adres email i dokończyć proces zakładania konta\n\n\t* Założ konto: http://localhost:8080/account-creation-details?token=b5b88f6e-8342-40db-abd3-fb2f484199d3&email=seal_user_1@sealcode.org" | ||||
``` | ``` | ||||
#### Logowanie i dodawanie zasobów | #### Logowanie i dodawanie zasobów | ||||
▲ Show 20 Lines • Show All 75 Lines • ▼ Show 20 Lines | |||||
Transfer-Encoding: chunked | Transfer-Encoding: chunked | ||||
cache-control: no-cache | cache-control: no-cache | ||||
content-encoding: gzip | content-encoding: gzip | ||||
content-type: application/json; charset=utf-8 | content-type: application/json; charset=utf-8 | ||||
set-cookie: sealious-anon=e558cd91-4591-4db7-ba39-ea340e0b1547; Max-Age=86400; Expires=Tue, 31 Jul 2018 13:42:42 GMT; HttpOnly; SameSite=Strict; Path=/ | set-cookie: sealious-anon=e558cd91-4591-4db7-ba39-ea340e0b1547; Max-Age=86400; Expires=Tue, 31 Jul 2018 13:42:42 GMT; HttpOnly; SameSite=Strict; Path=/ | ||||
vary: accept-encoding | vary: accept-encoding | ||||
{ | { | ||||
"body": { | |||||
"done": false, | "done": false, | ||||
"title": "Przetestować API" | "title": "Przetestować API" | ||||
}, | "id": "fhNxgSoJp", | ||||
"calculated_fields": {}, | "calculated_fields": {}, | ||||
"_metadata": { | |||||
"collection_name": "tasks", | "collection_name": "tasks", | ||||
"created_context": { | "created_context": { | ||||
"anonymous_user_id": "1n4eYyW_o", | "anonymous_user_id": "1n4eYyW_o", | ||||
"ip": "127.0.0.1", | "ip": "127.0.0.1", | ||||
"timestamp": 1532958162953, | "timestamp": 1532958162953, | ||||
"total": 1, | "total": 1, | ||||
"user_id": "kYxtJ2-pe" | "user_id": "kYxtJ2-pe" | ||||
}, | }, | ||||
"id": "fhNxgSoJp", | |||||
"last_modified_context": { | "last_modified_context": { | ||||
"anonymous_user_id": "1n4eYyW_o", | "anonymous_user_id": "1n4eYyW_o", | ||||
"ip": "127.0.0.1", | "ip": "127.0.0.1", | ||||
"timestamp": 1532958162953, | "timestamp": 1532958162953, | ||||
"total": 1, | "total": 1, | ||||
"user_id": "kYxtJ2-pe" | "user_id": "kYxtJ2-pe" | ||||
} | } | ||||
} | } | ||||
} | |||||
``` | ``` |