more documentation...

This commit is contained in:
Robin Grenzdörfer 2023-06-04 09:34:11 +00:00
parent de71e679ec
commit dc4501b5f2
23 changed files with 737 additions and 69 deletions

View File

@ -1,51 +1,50 @@
- [TibiCMS](../README.md)
- [Begriffe](begriffe.md)
- Servergrundlagen
- [Konfiguration](servergrundlagen/konfiguration.md)
- [Entitäten](servergrundlagen/entitaeten.md)
- RestAPI Endpunkte
- [/login](restapi/login.md)
- [/user](restapi/user.md)
- [/project](restapi/project.md)
- [/_/NS/COLLECTION](restapi/collection.md)
- [/_/NS/_/assets/ASSETSNAME](restapi/assets.md)
- Projekt Konfiguration
- [Ordnerstruktur](projektkonfig/ordnerstruktur.md)
- [config.yml](projektkonfig/config.yml.md)
- [collections](projektkonfig/collections.md)
- [fields](projektkonfig/collections/fields.md)
- [Datentypen](projektkonfig/collections/fields/datentypen.md)
- [Admin Widgets](projektkonfig/collections/fields/widgets.md)
- [· ContentBuilder](projektkonfig/collections/fields/widgets/contentbuilder.md)
- [indexes](projektkonfig/collections/indexes.md)
- [hooks](projektkonfig/collections/hooks.md)
- [imageFilter](projektkonfig/collections/imageFilter.md)
- [meta](projektkonfig/collections/meta.md)
- [jobs](projektkonfig/jobs.md)
- [assets](projektkonfig/assets.md)
- [dashboard](projektkonfig/dashboard.md)
- Admin Javascript Kontext
- [Allgemeines](admin-javascript-kontext/allgemeines.md)
- [collection.meta..eval](admin-javascript-kontext/collection.meta..eval.md)
- [field.meta..eval](admin-javascript-kontext/field.meta..eval.md)
- Server Javascript Kontext
- [Allgmeines](server-javascript-kontext/allgemeines.md)
- [hook](server-javascript-kontext/hook.md)
- [job](server-javascript-kontext/job.md)
- [validator](server-javascript-kontext/validator.md)
- Packages
- [user](server-javascript-kontext/packages/user.md)
- [response](server-javascript-kontext/packages/response.md)
- [cookie](server-javascript-kontext/packages/cookie.md)
- [db](server-javascript-kontext/packages/db.md)
- [http](server-javascript-kontext/packages/http.md)
- [smtp](server-javascript-kontext/packages/smtp.md)
- [fs](server-javascript-kontext/packages/fs.md)
- [tpl](server-javascript-kontext/packages/tpl.md)
- [jwt](server-javascript-kontext/packages/jwt.md)
- [image](server-javascript-kontext/packages/image.md)
- [bcrypt](server-javascript-kontext/packages/bcrypt.md)
- [xml](server-javascript-kontext/packages/xml.md)
- [charset](server-javascript-kontext/packages/charset.md)
- [pdf](server-javascript-kontext/packages/pdf.md)
- [debug](server-javascript-kontext/packages/debug.md)
- [TibiCMS](../README.md)
- [Begriffe](begriffe.md)
- Servergrundlagen
- [Konfiguration](servergrundlagen/konfiguration.md)
- [Entitäten](servergrundlagen/entitaeten.md)
- RestAPI Endpunkte
- [/login](restapi/login.md)
- [/user](restapi/user.md)
- [/project](restapi/project.md)
- [/\_/NS/COLLECTION](restapi/collection.md)
- Projekt Konfiguration
- [Ordnerstruktur](projektkonfig/ordnerstruktur.md)
- [config.yml](projektkonfig/config.yml.md)
- [collections](projektkonfig/collections.md)
- [fields](projektkonfig/collections/fields.md)
- [Datentypen](projektkonfig/collections/fields/datentypen.md)
- [Admin Widgets](projektkonfig/collections/fields/widgets.md)
- [· ContentBuilder](projektkonfig/collections/fields/widgets/contentbuilder.md)
- [indexes](projektkonfig/collections/indexes.md)
- [hooks](projektkonfig/collections/hooks.md)
- [imageFilter](projektkonfig/collections/imageFilter.md)
- [meta](projektkonfig/collections/meta.md)
- [jobs](projektkonfig/jobs.md)
- [assets](projektkonfig/assets.md)
- [dashboard](projektkonfig/dashboard.md)
- Admin Javascript Kontext
- [Allgemeines](admin-javascript-kontext/allgemeines.md)
- [collection.meta..eval](admin-javascript-kontext/collection.meta..eval.md)
- [field.meta..eval](admin-javascript-kontext/field.meta..eval.md)
- Server Javascript Kontext
- [Allgmeines](server-javascript-kontext/allgemeines.md)
- [hook](server-javascript-kontext/hook.md)
- [job](server-javascript-kontext/job.md)
- [validator](server-javascript-kontext/validator.md)
- Packages
- [user](server-javascript-kontext/packages/user.md)
- [response](server-javascript-kontext/packages/response.md)
- [cookie](server-javascript-kontext/packages/cookie.md)
- [db](server-javascript-kontext/packages/db.md)
- [http](server-javascript-kontext/packages/http.md)
- [smtp](server-javascript-kontext/packages/smtp.md)
- [fs](server-javascript-kontext/packages/fs.md)
- [tpl](server-javascript-kontext/packages/tpl.md)
- [jwt](server-javascript-kontext/packages/jwt.md)
- [image](server-javascript-kontext/packages/image.md)
- [bcrypt](server-javascript-kontext/packages/bcrypt.md)
- [xml](server-javascript-kontext/packages/xml.md)
- [charset](server-javascript-kontext/packages/charset.md)
- [pdf](server-javascript-kontext/packages/pdf.md)
- [debug](server-javascript-kontext/packages/debug.md)

View File

@ -1,3 +0,0 @@
# `/_/NAMESPACE/_/assets/ASSETSNAME`
TODO

View File

@ -1,4 +1,239 @@
# `/_/NAMESPACE/COLLECTION`
TODO
Dieser Endpoint ermöglicht Interaktionen mit den Collectionen, die flexible Strukturen zur Organisation und Kategorisierung von Daten darstellen. Sie können Collectioneintrag abrufen, aktualisieren, erstellen und löschen. Jede Collection wird durch einen eindeutigen Namespace und Namen identifiziert.
## GET /{namespace}/{collection}
Diese Anforderung ruft alle Einträge einer bestimmten Collection ab. Sie nimmt den Namespace und den Namen der Collection sowie optionale API-Parameter für die Anpassung der Anfrage als Parameter an.
### Antwort
Die Antwort ist ein Objekt mit folgenden Eigenschaften:
- `data`: Ein Array von CollectionEntry Objekten.
- `count`: Die Gesamtzahl der Einträge die zurückgegeben wurden.
```ts
interface Collection {
name: string
meta?: CollectionMeta
permissions?: {
public?: CollectionPermission
user?: CollectionPermission
[token: string]: CollectionPermission
}
projections?: {
[projectionName: string]: {
select: {
[field: string]: 1 | 0
}
}
}
fields: CollectionField[]
}
```
## GET /{namespace}/{collection}/{id}
iese Anforderung ruft einen bestimmten Eintrag in einer Collection ab. Sie nimmt den Namespace und Namen der Collection sowie die ID des abzurufenden Eintrags als Parameter an.
### Anforderungsparameter
- `id`: Die ID des abzurufenden Eintrags.
### Antwort
Die Antwort ist das entsprechende CollectionEntry Objekt.
## PUT /{namespace}/{collection}/{id}
Diese Anforderung aktualisiert die Daten eines vorhandenen Eintrags in einer Collection. Sie nimmt den Namespace und den Namen der Collection, die ID des zu aktualisierenden Eintrags und ein Änderungssatz-Objekt, das die zu aktualisierenden Daten enthält, als Parameter an.
### Anforderungsparameter
id: Die ID des zu aktualisierenden Eintrags.
data: Ein Änderungssatz-Objekt, das die zu aktualisierenden Daten enthält.
### Antwort
Die Antwort ist das aktualisierte CollectionEntry Objekt.
## POST /{namespace}/{collection}
Diese Anforderung erstellt einen neuen Eintrag in einer Collection. Sie nimmt den Namespace und den Namen der Collection und ein Datenobjekt, das die Informationen des neuen Eintrags enthält, als Parameter an. Optional kann eine Funktion für den Fortschritt des Uploads übergeben werden.
### Anforderungsparameter
- `data`: Ein Datenobjekt, das die Informationen des neuen Eintrags enthält.
### Antwort
Die Antwort ist das neu erstellte CollectionEntry Objekt.
## DELETE /{namespace}/{collection}/{id}
Diese Anforderung löscht einen vorhandenen Eintrag in einer Collection. Sie nimmt den Namespace und den Namen der Collection und die ID des zu löschenden Eintrags als Parameter an.
### Anforderungsparameter
- `id`: Die ID des zu löschenden Eintrags.
### Antwort
Die Antwort ist ein boolean, das true zurückgibt, wenn das Löschen erfolgreich war.
Jede Collection besteht aus mehreren Feldern (CollectionField), die verschiedene Datenpunkte repräsentieren. Jedes Feld hat einen Namen, einen Typ und ggf. eine Reihe von Subfeldern. Die Metadaten eines Feldes (CollectionFieldMeta) können zusätzliche Informationen über das Feld enthalten, wie z.B. ein Label, Hilfstexte, Widget-Typen und mehr.
Eine Collection kann auch Metadaten (CollectionMeta) enthalten, die Informationen über die Collection selbst enthalten.
```ts
interface CollectionNavigation {
label?: I18Text
muiIcon?: string
defaultSort?: {
field: string
order?: "ASC" | "DESC" | "MANUALLY"
}
defaultImageFilter?: string
views?: View[]
filter?: { [key: string]: any }
defaultCallback?:
| "edit"
| "view"
| {
eval: string
}
}
interface CollectionMeta extends CollectionNavigation {
singleton: boolean
rowIdentTpl?:
| string
| {
twig: string
}
subNavigation?: CollectionNavigation[]
tablist?: {
activeTab?: string
tabs: CollectionMetaTab[]
}
[key: string]: any
}
interface CollectionMetaTab {
name: string
label: I18Text
dependsOn?: DependsOn
subFields: {
source: string
name?: string
}[]
_resolvedSubFields?: CollectionField[]
_hide?: boolean
}
interface EntryViewTab {
name: string
meta: {
[key: string]: any
}
}
interface CollectionPermission {
methods?: MethodPermission
filter?: any
validProjections?: string[]
}
interface CollectionField {
name: string
type?: string
index?: ("single" | "unique")[]
meta?: CollectionFieldMeta
subFields?: CollectionField[]
}
type CssWithEval = string | { [key: string]: string | number } | { eval: string }
interface ContainerProps {
class?: string
style?: string
layout?: {
breakBefore: boolean
breakAfter: boolean
size: {
default: string
small: string
large: string
}
}
}
interface CollectionFieldMeta {
source?: string
label?: I18Text
helperText?: I18Text
widget?: string
valueMap?: {
[value: "string" | number]: {
name?: I18Text
muiIcon?: string
style?: string
}
}
containerProps?: ContainerProps
choices?: ArrayFieldChoice[] | EndpointOptions
filter?: boolean | FilterConfig
defaultValue?: DefaultValue
addAllowed?: boolean
props?: {
step?: string | number
[key: string]: string | number | boolean
}
inputProps?: {
step?: string | number
[key: string]: any
}
dependsOn?: DependsOn
css?: {
input?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
view?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
filter?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
}
folding?: {
unfolded?: boolean
previewFolded?:
| string
| {
eval: string
raw?: boolean
}
previewUnfolded?:
| string
| {
eval: string
raw?: boolean
}
}
[key: string]: any
}
```

View File

@ -1,3 +1,63 @@
# `/login`
TODO
## POST /login
Dieser Endpoint ermöglicht es Benutzern, sich in das System einzuloggen. Dabei wird eine Authentifizierung durchgeführt und bei erfolgreicher Authentifizierung ein Token zurückgegeben, der für nachfolgende API-Aufrufe verwendet wird.
## Anforderungsparameter
Der /login Endpoint erwartet folgende Daten im Anforderungskörper (options.data):
- `username`: Der Benutzername des Benutzers, der sich anmelden möchte. Typ: String.
- `password`: Das Passwort des Benutzers, der sich anmelden möchte. Typ: String.
Die Daten müssen als LoginData Objekt übergeben werden.
```ts
const loginData: LoginData = {
username: "IhrBenutzername",
password: "IhrPasswort",
}
```
## Antwort
Bei erfolgreicher Anmeldung gibt der /login Endpoint ein LoginResponse Objekt zurück. Dieses Objekt enthält:
- `token`: Ein Authentifizierungstoken, das für nachfolgende API-Aufrufe verwendet wird. Typ: String.
- `user`: Ein User Objekt, das Informationen über den eingeloggten Benutzer enthält.
```ts
interface User {
id: string // Eindeutige ID des Benutzers
insertTime: string // Zeitpunkt der Erstellung des Benutzerkontos
updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzerkontos
username: string // Benutzername des Benutzers
role: number // Rolle des Benutzers im System
permissions: any[] // Berechtigungen des Benutzers
meta: {
// Weitere optionale Benutzerinformationen
[key: string]: any
}
}
```
## Beispielaufruf
```ts
const loginData: LoginData = {
username: "IhrBenutzername",
password: "IhrPasswort",
}
postLogin(loginData)
.then((response) => {
console.log("Erfolgreiche Anmeldung! Token: ", response.token)
console.log("Benutzerinformationen: ", response.user)
})
.catch((error) => {
console.log("Fehler beim Login: ", error)
})
```

View File

@ -1,3 +1,101 @@
# `/project`
TODO
Dieser Endpoint bietet eine Schnittstelle für den Zugriff und die Manipulation von Projektdaten. Benutzer können Projekte erstellen, abrufen, aktualisieren und löschen.
GET /project
## GET /project
Mit dieser Funktion können Sie eine Liste aller Projekte abrufen. Diese Funktion nimmt optionale Parameter an, die verwendet werden können, um die abgerufenen Projekte zu sortieren oder zu filtern.
Diese Anforderung ruft eine Liste aller Projekte ab. Sie kann optionale Parameter verwenden, um die abgerufenen Projekte zu sortieren oder zu filtern.
Antwort
### Antwort
Die Antwort auf diese Anforderung ist ein Objekt mit zwei Eigenschaften:
- `data`: Ein Array von Projekt-Objekten.
- `count`: Die Gesamtzahl der Projekte die zurück gegeben wurden.
Jedes Projekt-Objekt hat die folgenden Eigenschaften:
```ts
interface Project {
id?: string // Eindeutiger Identifikator für das Projekt
insertTime?: string // Zeitpunkt der Erstellung des Projekts
updateTime?: string // Letzter Zeitpunkt der Aktualisierung des Projekts
configFile: string // Pfad zur Konfigurationsdatei des Projekts
name: string // Name des Projekts
description: string // Beschreibung des Projekts
users?: string[] // Array von Benutzer-IDs mit Zugriff auf das Projekt
api?: ProjectAPI // Zusätzliche Projektinformationen
yourPermissions?: {
// Berechtigungen des aktuellen Benutzers für das Projekt
[collectionName: string]: MethodPermission
}
}
```
## PUT /project/{id}
Diese Anforderung aktualisiert ein vorhandenes Projekt. Sie nimmt die ID des zu aktualisierenden Projekts und ein Änderungsset als Parameter an. Das Änderungsset ist ein Objekt, das die zu ändernden Eigenschaften und ihre neuen Werte enthält.
Anforderungsparameter
- `id`: Die ID des zu aktualisierenden Projekts.
- `data`: Ein Objekt, das die zu ändernden Eigenschaften und ihre neuen Werte enthält.
### Antwort
Die Antwort ist das aktualisierte Project Objekt.
## DELETE /project/{id}
Diese Anforderung löscht ein vorhandenes Projekt. Sie nimmt die ID des zu löschenden Projekts als Parameter an.
### Anforderungsparameter
- `id`: Die ID des zu löschenden Projekts.
### Antwort
Die Antwort ist ein Objekt mit einer message Eigenschaft, die eine Bestätigungsnachricht enthält.
## POST /project
Diese Anforderung erstellt ein neues Projekt. Sie nimmt ein Objekt als Parameter an, das die Eigenschaften des zu erstellenden Projekts enthält.
Anforderungsparameter
- `data`: Ein Objekt vom typ Project.
### Antwort
Die Antwort ist ein Objekt mit einer message Eigenschaft, die eine Bestätigungsnachricht enthält.
```ts
interface MethodPermission {
get: boolean
post: boolean
put: boolean
delete: boolean
}
interface ProjectPermission {
name: string
label: I18Text
}
type ProjectImageUrl = string | EvalObject
interface ProjectAPI {
isOnline: boolean
namespace: string
meta?: {
imageUrl?: ProjectImageUrl
permissions?: ProjectPermission[]
dashboard?: Dashboard
[key: string]: any
}
collections: Collection[]
}
```

View File

@ -1,3 +1,81 @@
# `/user`
TODO
Dieser Endpoint bietet eine Schnittstelle für den Zugriff und die Manipulation von Benutzerdaten. Sie können Benutzerinformationen abrufen, aktualisieren, erstellen und löschen. Jeder Benutzer wird durch eine eindeutige Benutzer-ID identifiziert.
## GET /user
Diese Anforderung ruft eine Liste aller Benutzer ab. Sie kann optionale Parameter verwenden, um die abgerufenen Benutzerdaten zu sortieren oder zu filtern.
### Antwort
Die Antwort auf diese Anforderung ist ein Users Objekt mit folgenden Eigenschaften:
- `data`: Ein Array von User Objekten.
- `count`: Die Gesamtzahl der Benutzer (optional).
Jedes User Objekt hat die folgenden Eigenschaften:
```ts
interface User {
id: string // Eindeutiger Identifikator des Benutzers
insertTime: string // Zeitpunkt der Erstellung des Benutzers
updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzers
username: string // Benutzername des Benutzers
role: number // Rolle des Benutzers, repräsentiert durch eine Zahl
permissions: any[] // Array von Berechtigungen des Benutzers
meta: {
// Zusätzliche Informationen über den Benutzer
[key: string]: any
}
}
```
## GET /user/{id}
Diese Anforderung ruft einen bestimmten Benutzer ab. Sie nimmt die ID des abzurufenden Benutzers als Parameter an.
Anforderungsparameter
- `id`: Die ID des abzurufenden Benutzers.
### Antwort
Die Antwort ist das entsprechende User Objekt.
## POST /user
Diese Anforderung erstellt einen neuen Benutzer. Sie nimmt ein Objekt als Parameter an, das die Eigenschaften des zu erstellenden Benutzers enthält.
### Anforderungsparameter
- `data`: Ein Objekt, das die Eigenschaften des zu erstellenden Benutzers enthält.
### Antwort
Die Antwort ist ein Objekt, das das neu erstellte User Objekt enthält.
## PUT /user/{id}
Diese Anforderung aktualisiert die Daten eines vorhandenen Benutzers. Sie nimmt die ID des zu aktualisierenden Benutzers und ein Objekt, das die zu aktualisierenden Daten enthält, als Parameter an.
### Anforderungsparameter
- `id`: Die ID des zu aktualisierenden Benutzers.
- `data`: Ein Objekt, das die zu aktualisierenden Daten enthält.
### Antwort
Die Antwort ist ein Objekt, das das aktualisierte User Objekt enthält.
## DELETE /user/{id}
Diese Anforderung löscht einen vorhandenen Benutzer. Sie nimmt die ID des zu löschenden Benutzers als Parameter an.
### Anforderungsparameter
`id`: Die ID des zu löschenden Benutzers.
### Antwort
Die Antwort ist ein boolean, das true zurückgibt, wenn das Löschen erfolgreich war.

View File

@ -0,0 +1,71 @@
Das HookContext-Interface bietet ein zentrales Objekt, um Zugang zu verschiedenen Attributen und Paketen zu erhalten. Es wird als context in den Hooks des tibi-server genutzt und stellt wichtige Funktionalitäten zur Verfügung, die zur Manipulation der Daten und Abläufe in den HTTP-Methoden und Schritten der API benötigt werden.
Das HookContext-Interface setzt sich aus mehreren Schnittstellen zusammen, darunter GetHookData, GetHookGetOnlyData, PostHookData, JobData, request und mehrere third-party Pakete. Hierbei sind mit ausnahme von den request und den third-party-paketen attributen alle attribute direkt auf dem context Objekt vorhanden. Request ist eine funktion die ihre Objekte zurückgibt und ist somit rechenaufwendig. Daher ist es ratsam bei mehrfacher nutzung des request attributs, sich den Wert in einer variable zwischen zu speichern. Die Attribute auf den paketen werden über context.paketname.attribut aufgerufen.
## GetHookData
Das GetHookData-Interface enthält Attribute, die spezifisch für die Manipulation von GET-Anfragen in den Hooks sind:
- `filter`: Ein Filter-Objekt, das die Anfragebedingungen für die zu abrufenden Dokumente enthält.
- `selector`: Ein Selektor-Objekt, das festlegt, welche Felder in den zurückgegebenen Dokumenten enthalten sein sollten.
- `offset`: Ein numerischer Wert, der den Startpunkt für die Rückgabe von Dokumenten festlegt.
- `limit` Ei` numerischer Wert, der die maximale Anzahl von Dokumenten festlegt, die zurückgegeben werden sollen.
- `sort`: Ein String oder ein Array von Strings, der die Sortierreihenfolge der zurückgegebenen Dokumente bestimmt.
- `pipelineMod`: Eine Funktion, die es ermöglicht, die MongoDB-Abfragepipeline zu modifizieren.
## PostHookData Interface
Das PostHookData-Interface enthält ein Attribut, das speziell für POST- und PUT-Hooks relevant ist:
`data`: Das Dokument oder die Daten, die gesendet wurden. Dies ist ein CollectionDocument-Objekt und wird in die Datenbank geschrieben.
## JobConfig und JobData Interfaces
Das JobConfig-Interface definiert die Konfiguration für einen Cron-Job, diese ist jene Konfig die im zugehörigen yaml definiert wurde:
- `meta`: Ein Metadatenobjekt.
- `cron`: Ein String, der die Cron-Job-Intervallspezifikation enthält.
- `type`: Der Typ des Jobprogramms. Derzeit wird nur "javascript" unterstützt.
- `file`: Der Pfad zur Datei des Jobprogramms.
Das JobData-Interface enthält ein job-Attribut, das ein JobConfig-Objekt ist und die Konfiguration des aktuellen Jobs repräsentiert.
## request
Die request Funktion liefert ein Objekt zurück, das Informationen über die HTTP-Anfrage enthält:
- `method`: Die HTTP-Methode der Anfrage (GET, POST, PUT, DELETE etc.).
- `remoteAddr`: Die entfernte IP-Adresse der Anfrage.
- `clientIp()`: Funktion zum Abrufen der Client-IP-Adresse der Anfrage.
- `host`: Der Host der Anfrage.
- `url`: Die vole URL der Anfrage.
- `path`: Der Pfad der Anfrage.
- `param(p: string)`: Funktion zum Abrufen von URL-Parametern.
- `query(q: string`: Funktion zum Abrufen von URL-Abfrageparametern.
- `header(h: string)`: Funktion zum Abrufen von HTTP-Headern.
- `body(`: Funktion zum Abrufen des HTTP-Body.
- `bodyBytes()`: Funktion zum Abrufen des HTTP-Body als byte array. Wird z.B. für die Umwandlung von iso8859 zu utf8 genutzt.
## Pakete
Jedes der folgenden Attribute ist ein Paket, das spezifische Funktionen bereitstellt:
- `db`: Stellt Funktionen zur Interaktion mit der Datenbank zur Verfügung (DbPackage).
- `smtp`: Bietet Funktionen zum Senden von E-Mails (SmtpPackage).
- `fs`: Bietet Funktionen zum Interagieren mit dem Dateisystem (FsPackage).
- `tpl`: Stellt Funktionen zum Arbeiten mit Templates zur Verfügung (TplPackage).
- ` http`: Bietet Funktionen zum Senden von HTTP-Anfragen (HttpPackage).
- `debug`: Stellt Funktionen zum Debuggen zur Verfügung (DebugPackage).
- `response`: Bietet Funktionen zur Manipulation der HTTP-Antwort (ResponsePackage).
- `user`: Bietet Funktionen zum Arbeiten mit Benutzern (UserPackage).
- `bcrypt`: Stellt Funktionen zum Hashen und Überprüfen von Passwörtern zur Verfügung (BcryptPackage)`
- `jwt`: Bietet Funktionen zum Arbeiten mit JSON Web Tokens (JwtPackage).
- `charset`: Bietet Funktionen zur Arbeit mit Zeichensätzen (CharsetPackage).
- `image`: Bietet Funktionen zur Arbeit mit Bildern (ImagePackage).
- `xml`: Stellt Funktionen zum Arbeiten mit XML-Daten zur Verfügung (XmlPackage).
- `cookie`: Bietet Funktionen zum Arbeiten mit Cookies (CookiePackage).
- `pdf`: Bietet Funktionen zum Arbeiten mit PDF-Dokumenten (PdfPackage).
- `crypt`: Bietet Funktionen für Kryptografie (CryptoPackage).
- `json`: Bietet Funktionen zum Arbeiten mit JSON-Daten (JsonPackage).
Diese Pakete erweitern die Möglichkeiten des Context Objektes und ermöglichen es, eine Vielzahl von Aufgaben auszuführen. Für detaillierte Informationen zu jedem Paket, siehe die spezifische Dokumentation des jeweiligen Pakets.

View File

@ -1,5 +1,13 @@
## bcrypt
Das BcryptPackage-Interface bietet Funktionen zur Passworthashing und -überprüfung mit dem bcrypt-Algorithmus. Es beinhaltet folgende Methoden:
- `hash(password: string, options?: {}: string`:
Diese Methode nimmt ein Klartextpasswort und optionale Hashing-Optionen entgegen und gibt das gehashte Passwort zurück. Die Optionen können den "cost"-Parameter steuern, der die Komplexität des Hashings bestimmt.
- `check(password: string, hash: string): boolean`:
Diese Methode nimmt ein Klartextpasswort und ein gehashtes Passwort entgegen und gibt zurück, ob das Klartextpasswort nach dem Hashing mit dem gehashten Passwort übereinstimmt.
```ts
interface BcryptPackage {
/**

View File

@ -1,5 +1,10 @@
## charset
Das CharsetPackage-Interface bietet Funktionen zur Zeichensatzkonvertierung. Es enthält folgende Methode:
- `iso8859ToUtf8(iso8859: string): string`:
Diese Methode nimmt einen String im ISO-8859-Zeichensatz entgegen und konvertiert ihn in den UTF-8-Zeichensatz. Dies kann verwendet werden, um Kompatibilität zwischen verschiedenen Systemen und Standards zu gewährleisten.
```ts
interface CharsetPackage {
/**

View File

@ -1,6 +1,12 @@
## cookie
Das Cookie-Paket stellt Funktionen bereit, um HTTP-Cookies aus den Anfragen zu lesen und in den Antworten zu setzen. Mit der Methode get(name: string): string kann der Wert eines bestimmten Cookies ausgelesen werden. Der Name des Cookies wird als Parameter übergeben. Die Methode set(name: string, value: string, options?: {maxAge?: number, path?: string, domain?: string, secure?: boolean, httpOnly?: boolean}): void ermöglicht das Setzen eines Cookies. Der Name und Wert des Cookies, sowie optionale Parameter wie maximales Alter (maxAge), Pfad (path), Domain, Secure- und HttpOnly-Flag können übergeben werden. Cookies sind ein essentieller Bestandteil für das Session-Management und personalisierte Nutzererfahrungen im Web.
Das CookiePackage-Interface bietet Funktionen zur Verwaltung von HTTP-Cookies. Es beinhaltet folgende Methoden:
- `get(name: string): string`:
Diese Methode nimmt den Namen eines Cookies entgegen und gibt den Wert dieses Cookies zurück.
- `set(name: string, value: string, options?: {}): void`:
Diese Methode nimmt den Namen und den Wert eines Cookies sowie optionale Cookie-Optionen entgegen und setzt das Cookie. Die Optionen können das Ablaufdatum, den Pfad, die Domain und die Secure- und HttpOnly-Flags steuern.
```ts
interface CookiePackage {

View File

@ -2,17 +2,23 @@
Das Database (Db) Paket stellt Methoden bereit, um Operationen auf einer Datenbank auszuführen. Es umfasst die folgenden Hauptmethoden:
- find(collection: string, query: object, options?: object): Diese Methode ermöglicht das Suchen von Dokumenten in einer bestimmten Sammlung basierend auf einer Query. Optional können Sie auch Optionen wie Limit, Skip, Sort, usw. angeben.
- `find(collection: string, query: object, options?: object)`:
Diese Methode ermöglicht das Suchen von Dokumenten in einer bestimmten Sammlung basierend auf einer Query. Optional können Sie auch Optionen wie Limit, Skip, Sort, usw. angeben.
- findOne(collection: string, query: object, options?: object): Ähnlich wie die find Methode, aber sie gibt nur das erste Dokument zurück, das die Query erfüllt.
- `findOne(collection: string, query: object, options?: object)`:
Ähnlich wie die find Methode, aber sie gibt nur das erste Dokument zurück, das die Query erfüllt.
- insert(collection: string, document: object): Diese Methode fügt ein neues Dokument in eine bestimmte Sammlung ein.
- `insert(collection: string, document: object`:
Diese Methode fügt ein neues Dokument in eine bestimmte Sammlung ein.
- update(collection: string, query: object, update: object, options?: object): Diese Methode aktualisiert Dokumente in einer bestimmten Sammlung, die eine Query erfüllt. Sie können auch optionale Parameter wie upsert und multi verwenden.
- `update(collection: string, query: object, update: object, options?: object)`:
Diese Methode aktualisiert Dokumente in einer bestimmten Sammlung, die eine Query erfüllt. Sie können auch optionale Parameter wie upsert und multi verwenden.
- remove(collection: string, query: object, options?: object): Diese Methode entfernt Dokumente aus einer bestimmten Sammlung, die eine Query erfüllen. Optionale Parameter wie justOne können verwendet werden.
- `remove(collection: string, query: object, options?: object)`:
Diese Methode entfernt Dokumente aus einer bestimmten Sammlung, die eine Query erfüllen. Optionale Parameter wie justOne können verwendet werden.
- count(collection: string, query: object): Diese Methode gibt die Anzahl der Dokumente in einer bestimmten Sammlung zurück, die eine Query erfüllen.
- `count(collection: string, query: object)`:
Diese Methode gibt die Anzahl der Dokumente in einer bestimmten Sammlung zurück, die eine Query erfüllen.
```ts
interface DbPackage {

View File

@ -1,5 +1,13 @@
## debug
Das DebugPackage-Interface bietet Funktionen zur Fehlersuche. Es enthält folgende Methoden:
- `dump(...toDump: any`:
void: Diese Methode nimmt eine oder mehrere Datenvariablen entgegen und schreibt diese Daten sowohl in den Server-Log als auch in den Header. Dies kann zur Fehlersuche und -behebung verwendet werden.
- `sentryTraceId(): string`:
Diese Methode gibt die ID des aktuellen Sentry-Trace zurück, der zur Überwachung und Nachverfolgung von Fehlern verwendet werden kann.
```ts
interface DebugPackage {
/**

View File

@ -1,5 +1,28 @@
## fs
Das FsPackage-Interface bietet Funktionen zur Datei- und Verzeichnisverwaltung. Es beinhaltet folgende Methoden:
- `configDir(): string`:
Diese Methode gibt den Pfad zum Verzeichnis der API-Konfigurationsdatei zurück.
- `readFile(path: string, options?: {}): string | any`:
Diese Methode nimmt einen relativen Pfad zu einer Datei und optionale Leseoptionen entgegen und gibt den Inhalt dieser Datei zurück. Die Optionen können steuern, ob der Inhalt als Byte-Array oder als Zeichenkette zurückgegeben wird.
- `writeFile(path: string, data: string | any): null`:
Diese Methode nimmt einen relativen Pfad zu einer Datei und Daten entgegen und schreibt diese Daten in die Datei.
- `stat(path: string): {}`:
Diese Methode nimmt einen Pfad zu einer Datei oder einem Verzeichnis entgegen und gibt Informationen über diese Datei oder dieses Verzeichnis zurück.
- `readDir(path: string): {}[]`:
Diese Methode nimmt einen Pfad zu einem Verzeichnis entgegen und gibt eine Liste der darin enthaltenen Dateien und Verzeichnisse zurück.
- `mkDir(path: string): void`:
Diese Methode nimmt einen Pfad entgegen und erstellt an diesem Ort ein neues Verzeichnis.
- `remove(path: string): void`:
Diese Methode nimmt einen Pfad entgegen und löscht die Datei oder das leere Verzeichnis an diesem Pfad.
```ts
interface FsPackage {
/**

View File

@ -1,6 +1,9 @@
## http
Das Http-Paket stellt eine fetch Methode zur Verfügung, die eine HTTP-Anfrage ausführt und eine Antwort zurückgibt. Sie nimmt eine URL und optionale Parameter wie Methode (GET, POST, usw.), Header, Körper und Timeout als Argumente entgegen.
Das HttpPackage-Interface bietet Funktionen zum Senden von HTTP-Anfragen. Es enthält die folgende Methode:
- `fetch(url: string, options?: {}): {}`:
Diese Methode nimmt eine URL und optionale Anforderungsoptionen entgegen und sendet eine HTTP-Anfrage an die angegebene URL. Die Optionen können die HTTP-Methode, Header, den Body und das Timeout steuern. Die Methode gibt ein Objekt zurück, das den Status, den StatusText, die Header, den Trailer, die URL und den Body der Antwort enthält.
```ts
interface HttpPackage {

View File

@ -1,5 +1,12 @@
## image
ImagePackage Interface
Das ImagePackage-Interface bietet Funktionen zur Bildmanipulation. Es enthält folgende Methode:
- `filter(sourceFile: string, targetFile: string, filters: {}[]): void`:
Diese Methode nimmt den Pfad zur Quellbilddatei, den Pfad zur Zieldatei und eine Reihe von Filtern entgegen und wendet diese Filter auf das Bild an. Die Filter können Aspekte des Bildes wie Größe, Helligkeit, Sättigung, Kontrast, Gamma, Unschärfe, Schärfe, Inversion, Graustufen und Qualität steuern.
```ts
interface ImagePackage {
/**

View File

@ -1,5 +1,15 @@
## jwt
JwtPackage Interface
Das JwtPackage-Interface bietet Funktionen zum Erstellen und Analysieren von JWT (JSON Web Token). Es enthält folgende Methoden:
- `create(claims: { [key: string]: any }, options?: { secret?: string, validityDuration?: number }): string`:
Diese Methode nimmt ein claims-Objekt und optionale Einstellungen entgegen und gibt einen signierten JWT-String zurück. Mit dieser Methode können Sie JWTs erstellen, die Daten enthalten und mit einem geheimen Schlüssel signiert sind.
- `parse(token: string, options?: { secret?: string }): { error?: string, valid: boolean, method: { Name: string, Hash: number }, header: { alg: string, typ: string }, claims: { exp?: number, [key: string]: any } }`:
Diese Methode nimmt einen JWT-String und optionale Einstellungen entgegen und gibt ein Objekt zurück, das Informationen über den Token enthält. Mit dieser Methode können Sie JWTs analysieren und die in ihnen enthaltenen Daten extrahieren.
```ts
interface JwtPackage {
/**

View File

@ -1,5 +1,23 @@
## jwt
PdfPackage Interface
Das PdfPackage-Interface bietet Funktionen zur Erzeugung und Manipulation von PDF-Dateien. Es enthält folgende Methoden:
- `fromHTML(html: string, options?: {}): an`:
Diese Methode nimmt einen HTML-String und optionale Einstellungen entgegen und gibt die binären Daten eines PDF-Dokuments zurück. Mit dieser Methode können Sie ein PDF-Dokument aus HTML-Inhalten erstellen. Die optionalen Einstellungen ermöglichen es Ihnen, verschiedene Aspekte des PDF-Dokuments zu steuern, einschließlich der Ausrichtung, Seitengröße, Ränder, Kopf- und Fußzeilen und vieles mehr.
- `cpu(command: "watermark" | "stamp" | "merge" | "rotate" | "create", pdfData: any | any[], options?: {}): any`:
Diese Methode nimmt einen Befehl, PDF-Daten und optionale Einstellungen entgegen und gibt die binären Daten eines neuen PDF-Dokuments zurück. Mit dieser Methode können Sie verschiedene Operationen auf einem oder mehreren PDF-Dokumenten durchführen, einschließlich:
- `watermark`: Fügen Sie ein Wasserzeichen zum PDF hinzu.
- `stamp`: Fügen Sie einen Stempel zum PDF hinzu.
- `merge`: Kombinieren Sie mehrere PDF-Dokumente zu einem.
- `rotate`: Drehen Sie Seiten im PDF.
- `create`: Erstellen Sie ein neues PDF.
Die pdfData-Parameter können die binären Daten eines einzelnen PDF-Dokuments, ein Array von PDF-Dokumenten (zum Zusammenführen) oder ein Objekt mit einer Beschreibung (zum Erstellen) enthalten. Die optionalen Einstellungen variieren je nach Befehl und ermöglichen es Ihnen, verschiedene Aspekte der Operation zu steuern.
```ts
interface PdfPackage {
/**

View File

@ -1,6 +1,9 @@
## image
Das Response-Paket ermöglicht das Manipulieren der HTTP-Antwort-Header. Mit der Methode header(name: string, value: any): void können individuelle Header in der HTTP-Antwort gesetzt werden. Der Name des Headers und sein Wert werden als Parameter übergeben. Das Manipulieren von HTTP-Headern kann für verschiedene Zwecke verwendet werden, beispielsweise zum Setzen von Cookies, Steuern von Caching-Verhalten oder Hinzufügen von sicherheitsrelevanten Informationen.
Das ResponsePackage-Interface bietet Funktionen zur Manipulation von HTTP-Antwort-Headern. Es enthält die folgende Methode:
- `header(name: string, value: any): void`:
Diese Methode nimmt den Namen und den Wert eines Headers entgegen und setzt diesen Header in der HTTP-Antwort.
```ts
interface ResponsePackage {

View File

@ -1,6 +1,10 @@
## smtp
Das Smtp-Paket ermöglicht das Senden von E-Mails. Es stellt eine sendMail Methode zur Verfügung, die eine E-Mail an einen oder mehrere Empfänger sendet. Die Methode nimmt eine Reihe von Parametern, einschließlich des SMTP-Hosts, des Benutzernamens und Passworts für die Authentifizierung, der Empfängeradressen, des Betreffs, des Absenders und der Nachricht, sowie optionaler Anhänge, entgegen.
Das SmtpPackage-Interface bietet Funktionen zum Senden von E-Mails. Es enthält die folgende Methode:
- `sendMail(options: {}): void`:
Diese Methode nimmt eine Reihe von Optionen für das Senden einer E-Mail entgegen und sendet die E-Mail entsprechend diesen Optionen. Die Optionen können den SMTP-Host, den Benutzernamen und das Passwort für die Authentifizierung, die Empfänger, den Betreff, den Absender und den Inhalt der E-Mail sowie optionale Anhänge steuern.
```ts
interface SmtpPackage {

View File

@ -1,5 +1,10 @@
## tpl
Das TplPackage-Interface bietet Funktionen zur Ausführung von Template-Code. Es enthält folgende Methode:
`execute(code: string, contextData?: { [key: string]: any }): string`:
Diese Methode nimmt einen Template-Code und optionale Kontextdaten entgegen und gibt das Ergebnis der Template-Ausführung als String zurück. Mit dieser Methode können Sie dynamischen Code ausführen und das Ergebnis in Ihrem Programm verwenden. Genutzt wird dies meist um E-Mail templates zu rendern.
```ts
interface TplPackage {
/**

View File

@ -1,6 +1,9 @@
## user
Das User-Paket stellt eine Schnittstelle bereit, um Informationen über den derzeit authentifizierten Benutzer zu erhalten. Hier ist selbstverständlich die authentizierung im TibiAdmin und nicht auf der Kunden Website gemeint. Es beinhaltet die Methode auth(), die die Benutzer-Identifikation (ID), den Benutzernamen, die Rolle und die Berechtigungen des Benutzers zurückgibt. Die Benutzer-ID und der Benutzername sind einzigartige Identifizierungsmerkmale für jeden Benutzer. Die Rolle definiert das Berechtigungslevel des Benutzers und die Berechtigungen sind eine Liste von Aktionen, die der Benutzer ausführen darf. Es ist wichtig zu beachten, dass diese Informationen nur dann verfügbar sind, wenn der Benutzer authentifiziert ist.
Das UserPackage-Interface bietet Funktionen zur Arbeit mit den Informationen des derzeit authentifizierten Benutzers. Es enthält die folgende Methode:
- `auth(): {}`:
Diese Methode gibt ein Objekt zurück, das die ID, den Benutzernamen, die Rolle und die Berechtigungen des derzeit authentifizierten Benutzers enthält. Es ist wichtig zu beachten, dass diese Informationen nur dann verfügbar sind, wenn der Benutzer authentifiziert ist.
```ts
interface UserPackage {

View File

@ -1,5 +1,13 @@
## xml
Das XmlPackage-Interface bietet Funktionen zum Erstellen und Analysieren von XML-Strings. Es enthält folgende Methoden:
- `create(data: any, options?: {}): string`:
Diese Methode nimmt ein Objekt oder ein Array als Daten sowie optionale Einstellungen entgegen und gibt einen XML-String zurück. Mit dieser Methode können Sie beispielsweise ein JavaScript-Objekt oder -Array in einen XML-String umwandeln.
- `parse(xml: string, options?: {}): any`:
Diese Methode nimmt einen XML-String und optionale Einstellungen entgegen und gibt ein JavaScript-Objekt zurück. Mit dieser Methode können Sie XML-Strings analysieren und in ein Format umwandeln, das in JavaScript leichter zu handhaben ist.
```ts
interface XmlPackage {
/**

View File

@ -10,4 +10,17 @@ Die Projektkonfiguration ist zwingend notwendig und wird beim Anlegen oder Bearb
## Benutzer
TODO
Im Tibi gibt es 3 Benutzerarten:
- `admin`: Zugriff auf alle Projekte & alle Berechtigungen auf diesen Projekten.
- `editor`: Zugrff auf jene Projekte, denen er zugeordnet wird.
- `user`: Kein Zugriff auf Tibi admin Oberfläche, jedoch über API auf jene Projekte, denen er zu gewiesen wurde und in den jeweiligen Collections jene Berechtigungen, die er über das Permissions Objekt in der Collection erhalten hat.
```yaml
permissions:
user:
methods:
get: true
post: true
put: true
delete: true
```