diff --git a/api/collections/democol.yml b/api/collections/democol.yml index 981e66f..42de751 100644 --- a/api/collections/democol.yml +++ b/api/collections/democol.yml @@ -24,7 +24,7 @@ fields: - !include fields/isEmployed.yml - !include fields/profilePic.yml - !include fields/skills.yml - - !include fields/supervisor.yml + - !include fields/image.yml - !include fields/tags.yml - !include fields/gender.yml - !include fields/emplymentDetails.yml diff --git a/api/collections/democol/meta.yml b/api/collections/democol/meta.yml index b052fe6..a0e658b 100644 --- a/api/collections/democol/meta.yml +++ b/api/collections/democol/meta.yml @@ -10,7 +10,7 @@ muiIcon: web defaultSort: # Nach welchem Feld soll sortiert werden? field: updatedTime - # ASC für aufsteigend oder DESC für absteigend + # ASC für aufsteigend oder DESC für absteigend oder MANUALLY um manuell sortieren zu können order: DESC # Ist ein Javascript Message-Object-Empfänger implementiert, der empfangene @@ -30,7 +30,7 @@ views: - !include simpleList.yml - !include table.yml -# Wird eine Kollektion als eine Gesamtliste schnell unübersichtlich, hild die +# Wird eine Kollektion als eine Gesamtliste schnell unübersichtlich, hild die # Definition von "subNavigation". # Die meisten Angaben sind aus obiger Beschreibung den meta-Objektes bekannt. # Es wird hier nur auf die zusätzlichen Angaben eingegangen. @@ -73,12 +73,12 @@ subNavigation: - !include simpleList.yml - !include table.yml # Um mehr Übersicht zu bekommen können zum Einen andere "views" und "defaultSort" - # genutzt werden. Es kann aber auch eine Einschränkung der Daten über eine + # genutzt werden. Es kann aber auch eine Einschränkung der Daten über eine # Vorfilterung via "filter" geben. "filter" ist ein Objekt mit MongoDB-Filterangaben. # siehe: https://www.mongodb.com/docs/compass/current/query/filter/ filter: type: page - + - name: news label: de: Neuigkeiten @@ -104,9 +104,9 @@ tablist: !include tablist.yml # OpenAPI-Spezifikation für die API-Endpunkte der Kollektion openapi: get: - summary: + summary: en: list all datasets of democol de: listet alle Datensätze der Kollektion democol auf - description: + description: en: list all datasets of democol with pagination and/or filtering - de: listet alle Datensätze der Kollektion democol mit Paginierung und/oder Filterung \ No newline at end of file + de: listet alle Datensätze der Kollektion democol mit Paginierung und/oder Filterung diff --git a/api/collections/democol/tablist.yml b/api/collections/democol/tablist.yml index 0af052c..eb0d35d 100644 --- a/api/collections/democol/tablist.yml +++ b/api/collections/democol/tablist.yml @@ -25,7 +25,7 @@ tabs: - source: isEmployed - source: profilePic - source: skills - - source: supervisor + - source: image - source: tags - name: content label: diff --git a/api/collections/fields/supervisor.yml b/api/collections/fields/image.yml similarity index 87% rename from api/collections/fields/supervisor.yml rename to api/collections/fields/image.yml index 914e52f..41d648f 100644 --- a/api/collections/fields/supervisor.yml +++ b/api/collections/fields/image.yml @@ -1,7 +1,7 @@ -name: supervisor # Name des Eingabefelds. +name: image # Name des Eingabefelds. type: string # Datentyp des Eingabefelds. meta: - label: { de: "Vorgesetzter", en: "Supervisor" } # Feldlabel. + label: { de: "Bild", en: "Image" } # Feldlabel. widget: foreignKey # Verwendetes Widget. foreign: collection: medialib # Name der Sammlung, in der die ausgewählten Daten gespeichert sind. diff --git a/api/collections/medialib.yml b/api/collections/medialib.yml index bf44bd0..58ef9ea 100644 --- a/api/collections/medialib.yml +++ b/api/collections/medialib.yml @@ -3,40 +3,14 @@ name: medialib uploadPath: ../media/medialib -fields: - - !include fields/title.yml - - # Ein Feld vom Typ "file" wird für die Mediathek natürlich - # benötigt. - - name: file - type: file - meta: - label: - de: Datei - en: File - -permissions: - public: - methods: - get: true - post: false - put: false - delete: false - user: - methods: - get: true - post: true - put: true - delete: true - meta: label: de: Medienbibliothek en: Media Library muiIcon: multimedia defaultSort: - field: title - order: ASC + field: sort + order: MANUALLY #alternativ auch ASC und DESC möglich # "defaultImageFilter" dient auch hier nur zur Reduzierung der # Bildgröße bei der Anzeige im tibi-admin (Listen). @@ -48,15 +22,51 @@ meta: # "subNavigation" Index definiert, werden auch folgende "views" # verwendet. views: - - type: table - mediaQuery: "(min-width: 0px)" + - type: simpleList + mediaQuery: "(max-width: 767px)" + primaryText: path columns: + - source: file - source: updateTime - label: letztes Update type: datetime + label: letztes Update - source: title filter: true + - source: description + filter: true + - type: table + mediaQuery: "(min-width: 768px) and (max-width: 1199px)" + columns: - source: file + - source: updateTime + type: datetime + label: letztes Update + - source: title + filter: true + - source: description + filter: true + + - type: cardList + mediaQuery: "(min-width: 1200px)" + fileDropArea: + label: + { + de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.", + en: "Drag and drop some files here, or click to upload.", + } + helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" } + targetField: file + pageAsDropArea: false + + fields: + - source: file + - source: updateTime + type: datetime + label: letztes Update + - source: title + filter: true + - source: description + filter: true # Wird ein "subNavigation" Index für "image-/file-/videoSelect" definiert, # wird die entsprechende Navigation aus folgender Liste angesprochen. @@ -72,12 +82,17 @@ meta: # Folgende Ansicht wird für unsere Auswahl der Datei im ContentBuilder # angeboten. views: - - type: table + - type: cards mediaQuery: "(min-width: 0px)" - columns: + fields: + - source: file + - source: updateTime + type: datetime + label: letztes Update - source: title filter: true - - source: file + - source: description + filter: true # Damit der ContentBuilder weiß, welche Datei ausgewählt wurde, ist # ist folgender "defaultCallback" notwendig. @@ -96,7 +111,7 @@ meta: (entry) => { parent.selectAsset("medialib/" + entry.id + "/" + entry.file?.src + "?filter=l") parent.focus() - }s + } //!js - name: modalForeign # Name des Eingabefelds oder der Ansicht. @@ -115,5 +130,61 @@ meta: } //!js - openapi: - disabled: true +permissions: + public: + methods: + get: true + post: false + put: false + delete: false + user: + methods: + get: true + post: true + put: true + delete: true + +projections: + dashboard: + select: +hooks: + delete: + return: + type: javascript + file: hooks/medialib/delete_return.js + +fields: + # Ein Feld vom Typ "file" wird für die Mediathek natürlich + # benötigt. + - name: file + type: file + meta: + label: + de: Datei + en: File + - name: title + type: string + meta: + label: + de: Titel + en: Title + - name: description + type: string + meta: + widget: richtext + label: + de: Kurzbeschreibung + en: Short Description + + - name: sort + type: number + + meta: + label: + de: Manuelle Sortierung + en: Manual Sorting + inputProps: + { readonly: true, placeholder: { de: "Wert wird automatisch gesetzt", en: "Value is set automatically" } } + helperText: + de: Dieses Feld wird für die manuelle Sortierung benötigt. Sobald ein Eintrag per Drag&Drop verschoben wurde, wird die neue Position innerhalb der Liste eingetragen. + en: This field is required for manual sorting. As soon as an entry is moved using Drag&Drop, the new position is entered in the list. diff --git a/api/hooks/medialib/delete_return.js b/api/hooks/medialib/delete_return.js new file mode 100644 index 0000000..49a4bb7 --- /dev/null +++ b/api/hooks/medialib/delete_return.js @@ -0,0 +1,18 @@ +;(function () { + const request = context.request() + //get id of deleted image entry (delete request URL is : .../api/_/demo/medialib/id) + const id = request.param("id") + + //find all entrys where there is an image field with the id of this deleted one (image is an foreignKey widget, so stores the id as a string internally) + const referencingElements = context.db.find("democol", { + filter: { + image: id, + }, + }) + referencingElements.forEach((e) => { + //update all those entries to remove the image id from them, since its deleted... + context.db.update("democol", e.id, { + image: "", + }) + }) +})() diff --git a/docs/md/server-javascript-kontext/packages/bcrypt.md b/docs/md/server-javascript-kontext/packages/bcrypt.md index e69de29..09a8ac9 100644 --- a/docs/md/server-javascript-kontext/packages/bcrypt.md +++ b/docs/md/server-javascript-kontext/packages/bcrypt.md @@ -0,0 +1,26 @@ +## bcrypt + +```ts +interface BcryptPackage { + /** + * hash password via bcrypt algo + * + * @param password clear text password + * @param options hashing options + */ + hash( + password: string, + options?: { + cost?: number + } + ): string + + /** + * check password against hashed password via bcrypt algo + * + * @param password clear text password + * @param hash hashed password + */ + check(password: string, hash: string): boolean +} +``` diff --git a/docs/md/server-javascript-kontext/packages/charset.md b/docs/md/server-javascript-kontext/packages/charset.md index e69de29..581289e 100644 --- a/docs/md/server-javascript-kontext/packages/charset.md +++ b/docs/md/server-javascript-kontext/packages/charset.md @@ -0,0 +1,12 @@ +## charset + +```ts +interface CharsetPackage { + /** + * convert iso8859 to utf8 + * + * @param iso8859 iso string + */ + iso8859ToUtf8(iso8859: string): string +} +``` diff --git a/docs/md/server-javascript-kontext/packages/cookie.md b/docs/md/server-javascript-kontext/packages/cookie.md index e69de29..6f1065b 100644 --- a/docs/md/server-javascript-kontext/packages/cookie.md +++ b/docs/md/server-javascript-kontext/packages/cookie.md @@ -0,0 +1,33 @@ +## 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. + +```ts +interface CookiePackage { + /** + * get cookie from http header + * + * @param name cookie name + */ + get(name: string): string + + /** + * set cookie via http header + * + * @param name cookie name + * @param value cookie value + * @param options cookie options + */ + set( + name: string, + value: string, + options?: { + maxAge?: number + path?: string + domain?: string + secure?: boolean + httpOnly?: boolean + } + ): void +} +``` diff --git a/docs/md/server-javascript-kontext/packages/db.md b/docs/md/server-javascript-kontext/packages/db.md index e69de29..dfa33b4 100644 --- a/docs/md/server-javascript-kontext/packages/db.md +++ b/docs/md/server-javascript-kontext/packages/db.md @@ -0,0 +1,82 @@ +## db + +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. + + - 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. + + - 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. + + - 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 { + /** + * read results from a collection + * + * @param colName collection name + * @param options options map + */ + find(colName: string, options?: DbReadOptions): CollectionDocument[] + + /** + * read count of documents for filter from a collection + * + * @param colName collection name + * @param options options map (only filter is valid) + */ + count(colName: string, options?: DbReadOptions): number + + /** + * create a document in a collection + * + * @param colName collection name + * @param data data map + */ + create(colName: string, data: CollectionDocument): CollectionDocument + + /** + * update a document in a collection + * + * @param colName collection name + * @param id id of entry + * @param data new/changed data + */ + update(colName: string, id: string, data: CollectionDocument): CollectionDocument + + /** + * deletes one document by id from collection + * + * @param colName collection name + * @param id id of entry + */ + delete(colName: string, id: string): { message: "ok" } + + /** + * deletes documents by filter from collection + * + * @param colName collection name + * @param options options map, only filter valid + */ + deleteMany(colName: string, options?: DbReadOptions): { message: "ok"; removed: number } +} + +interface DbReadOptions { + filter?: { + [key: string]: any + } + selector?: { + [key: string]: any + } + projection?: string + offset?: number + limit?: number + sort?: string[] + pipelineMod?: (pipe: { [key: string]: any }[]) => { [key: string]: any }[] +} +``` diff --git a/docs/md/server-javascript-kontext/packages/debug.md b/docs/md/server-javascript-kontext/packages/debug.md index e69de29..89b6b17 100644 --- a/docs/md/server-javascript-kontext/packages/debug.md +++ b/docs/md/server-javascript-kontext/packages/debug.md @@ -0,0 +1,17 @@ +## debug + +```ts +interface DebugPackage { + /** + * dumps data to header and server log + * + * @param toDump data to dump + */ + dump(...toDump: any): void + + /** + * get Sentry trace id + */ + sentryTraceId(): string +} +``` diff --git a/docs/md/server-javascript-kontext/packages/fs.md b/docs/md/server-javascript-kontext/packages/fs.md index e69de29..30ad72b 100644 --- a/docs/md/server-javascript-kontext/packages/fs.md +++ b/docs/md/server-javascript-kontext/packages/fs.md @@ -0,0 +1,70 @@ +## fs + +```ts +interface FsPackage { + /** + * get directory path of api config file + * + */ + configDir(): string + + /** + * read a file relative to config dir and return its content + * + * @param path relative file path + * @param options optional options + */ + readFile( + path: string, + options?: { + bytes: boolean // if true return []byte instead of string + } + ): string | any + + /** + * write data to a file relative to config dir + * + * @param path relative file path + * @param data string or []byte data + */ + writeFile(path: string, data: string | any): null + + /** + * stat file or directory + * + * @param path + */ + stat(path: string): { + name: string + size: number + isDir: boolean + modTime: string + } + + /** + * list directory entries + * + * @param path + */ + readDir(path: string): { + name: string + size: number + isDir: boolean + modTime: string + }[] + + /** + * make directory and all missing sub directories, no error if directory already exists + * + * @param path + */ + mkDir(path: string): void + + /** + * remove file or empty directory + * + * @param path + */ + remove(path: string): void +} +``` diff --git a/docs/md/server-javascript-kontext/packages/http.md b/docs/md/server-javascript-kontext/packages/http.md index e69de29..632e460 100644 --- a/docs/md/server-javascript-kontext/packages/http.md +++ b/docs/md/server-javascript-kontext/packages/http.md @@ -0,0 +1,34 @@ +## 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. + +```ts +interface HttpPackage { + /** + * http request + * + * @param url url for request + * @param options request options + */ + fetch( + url: string, + options?: { + method?: string + headers?: { [key: string]: string } + body?: string + // timeout in seconds + timeout?: number + } + ): { + status: number + statusText: string + headers: { [key: string]: string } + trailer: { [key: string]: string } + url: string + body: { + text(): string + json(): any + } + } +} +``` diff --git a/docs/md/server-javascript-kontext/packages/image.md b/docs/md/server-javascript-kontext/packages/image.md index e69de29..bc4e031 100644 --- a/docs/md/server-javascript-kontext/packages/image.md +++ b/docs/md/server-javascript-kontext/packages/image.md @@ -0,0 +1,32 @@ +## image + +```ts +interface ImagePackage { + /** + * convert image from source file to target file with filters + * + * @param sourceFile + * @param targetFile + * @param filters + */ + filter( + sourceFile: string, + targetFile: string, + filters: { + fit?: boolean + fill?: boolean + width?: number + height?: number + brightness?: number + saturation?: number + contrast?: number + gamma?: number + blur?: number + sharpen?: number + invert?: boolean + grayscale?: boolean + quality?: number + }[] + ): void +} +``` diff --git a/docs/md/server-javascript-kontext/packages/jwt.md b/docs/md/server-javascript-kontext/packages/jwt.md index e69de29..a903f2f 100644 --- a/docs/md/server-javascript-kontext/packages/jwt.md +++ b/docs/md/server-javascript-kontext/packages/jwt.md @@ -0,0 +1,49 @@ +## jwt + +```ts +interface JwtPackage { + /** + * create a jwt signed token string + * + * @param claims data object + * @param options options (secret, validityDuration = expiry in X seconds) + */ + create( + claims: { + [key: string]: any + }, + options?: { + secret?: string + validityDuration?: number + } + ): string + + /** + * parse jwt token string + * + * @param token token string + * @param options options (secret) + */ + 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 + } + } +} +``` diff --git a/docs/md/server-javascript-kontext/packages/pdf.md b/docs/md/server-javascript-kontext/packages/pdf.md index e69de29..0a946a3 100644 --- a/docs/md/server-javascript-kontext/packages/pdf.md +++ b/docs/md/server-javascript-kontext/packages/pdf.md @@ -0,0 +1,95 @@ +## jwt + +```ts +interface PdfPackage { + /** + * generate pdf from html + * + * @param html html string + * @param options options + * + * @returns []byte of pdf data + */ + fromHTML( + html: string, + options?: { + copies?: number // Number of copies to print into the pdf file (default 1) + dpi?: number // Change the dpi explicitly (this has no effect on X11 based systems) + grayscale?: boolean // PDF will be generated in grayscale + imageDpi?: number // When embedding images scale them down to this dpi (default 600) + imageQuality?: number // When jpeg compressing images use this quality (default 94) + lowQuality?: boolean // Generates lower quality pdf/ps. Useful to shrink the result document space + marginBottom?: number // Set the page bottom margin + marginLeft?: number // Set the page left margin (default 10mm) + marginRight?: number // Set the page right margin (default 10mm) + marginTop?: number // Set the page top margin + noCollate?: boolean // Do not collate when printing multiple copies (default collate) + noPdfCompression?: boolean // Do not use lossless compression on pdf objects + orientation?: "Portrait" | "Landscape" // Set orientation to Landscape or Portrait (default Portrait) + pageHeight?: number // Page height + pageSize?: string // Set paper size to: A4, Letter, etc. (default A4) + pageWidth?: number // Page width + title?: string // The title of the generated pdf file (The title of the first document is used if not specified) + // page settings + printMediaType?: boolean // Use print media-type instead of screen + footerCenter?: string // Centered footer text + footerFontName?: string // Set footer font name (default Arial) + footerFontSize?: number // Set footer font size (default 12) + footerLeft?: string // Left aligned footer text + footerLine?: boolean // Display line above the footer + footerRight?: string // Right aligned footer text + footerSpacing?: number // Spacing between footer and content in mm (default 0) + footerHTML?: string // URL to footer html + headerCenter?: string // Centered header text + headerFontName?: string // Set header font name (default Arial) + headerFontSize?: number // Set header font size (default 12) + headerLeft?: string // Left aligned header text + headerLine?: boolean // Display line below the header + headerRight?: string // Right aligned header text + headerSpacing?: number // Spacing between header and content in mm (default 0) + headerHTML?: string // URL to header html + } + ): any + + /** + * process existing pdf data + * + * @param command pdfcpu command + * @param pdfData []byte of pdf data, multiple []byte as array of pdf's to merge or object with description to create + * @param options options + * + * @returns []byte of new pdf data + */ + cpu( + command: "watermark" | "stamp" | "merge" | "rotate" | "create", + pdfData: any | any[], + options?: { + pages?: (string | number)[] + description?: { + fontname?: string + points?: number + rtl?: boolean + position?: "full" | "tl" | "tc" | "tr" | "l" | "c" | "r" | "bl" | "bc" | "br" + offset?: string + scalefactor?: number | string + aligntext?: "left" | "center" | "right" | "justified" + strokecolor?: string + fillcolor?: string + backgroundcolor?: string + rotation?: number + diagonal?: 1 | 2 + opacity?: number + rendermode?: 0 | 1 | 2 + margins?: number | string + border?: number | string + url?: string + } + mode?: "text" | "image" | "pdf" + bytes?: any // []byte of watermark image + file?: string // file for pdf watermark + text?: string // text for text watermark + rotation?: number + } + ): any +} +``` diff --git a/docs/md/server-javascript-kontext/packages/response.md b/docs/md/server-javascript-kontext/packages/response.md index e69de29..541ec88 100644 --- a/docs/md/server-javascript-kontext/packages/response.md +++ b/docs/md/server-javascript-kontext/packages/response.md @@ -0,0 +1,15 @@ +## 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. + +```ts +interface ResponsePackage { + /** + * set response header + * + * @param name header name + * @param value value + */ + header(name: string, value: any): void +} +``` diff --git a/docs/md/server-javascript-kontext/packages/smtp.md b/docs/md/server-javascript-kontext/packages/smtp.md index e69de29..2816d90 100644 --- a/docs/md/server-javascript-kontext/packages/smtp.md +++ b/docs/md/server-javascript-kontext/packages/smtp.md @@ -0,0 +1,28 @@ +## 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. + +```ts +interface SmtpPackage { + /** + * send an email + * + * @param options email options map + */ + sendMail(options: { + host?: string + username?: string + password?: string + to: string | string[] + cc?: string | string[] + bcc?: string | string[] + subject?: string + from: string + fromName?: string + replyTo?: string + plain?: string + html?: string + attach?: string | string[] + }): void +} +``` diff --git a/docs/md/server-javascript-kontext/packages/tpl.md b/docs/md/server-javascript-kontext/packages/tpl.md index e69de29..9d84496 100644 --- a/docs/md/server-javascript-kontext/packages/tpl.md +++ b/docs/md/server-javascript-kontext/packages/tpl.md @@ -0,0 +1,18 @@ +## tpl + +```ts +interface TplPackage { + /** + * execute a template code and return result + * + * @param code template code + * @param contextData template context map + */ + execute( + code: string, + contextData?: { + [key: string]: any + } + ): string +} +``` diff --git a/docs/md/server-javascript-kontext/packages/user.md b/docs/md/server-javascript-kontext/packages/user.md index e69de29..d0bdac3 100644 --- a/docs/md/server-javascript-kontext/packages/user.md +++ b/docs/md/server-javascript-kontext/packages/user.md @@ -0,0 +1,17 @@ +## 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. + +```ts +interface UserPackage { + /** + * get JWT authentication + */ + auth(): { + id: string + username: string + role: number + permissions: string[] + } +} +``` diff --git a/docs/md/server-javascript-kontext/packages/xml.md b/docs/md/server-javascript-kontext/packages/xml.md index e69de29..9e458e1 100644 --- a/docs/md/server-javascript-kontext/packages/xml.md +++ b/docs/md/server-javascript-kontext/packages/xml.md @@ -0,0 +1,21 @@ +## xml + +```ts +interface XmlPackage { + /** + * create xml string + * + * @param data object or array + * @param options options + */ + create(data: any, options?: {}): string + + /** + * parse xml string to json + * + * @param xml xml string + * @param options options + */ + parse(xml: string, options?: {}): any +} +```