Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

In Quino ist es möglich, Klassen “öffentlich” zur Verfügung zu stellen, um Teile der Applikation ohne Authentifizierung benutzen zu können.

Verwendung

Um den öffentlichen Bereich verwenden zu können, muss im jeweiligen Client-Projekt ein Routing eingerichtet werden, welches alle “/public” Routes zu einer separaten Applikation umleitet. Beispiel:

export const RootPage: React.FC = () => {
  return (
    <BrowserRouter>
      <Routes>
        <Route path={`/${PublicModulePathIdentifier}`}>
          <Route index element={<AppPublic />} />
          <Route path={'*'} element={<AppPublic />} />
        </Route>
        <Route path={'/'}>
          <Route index element={<App />} />
          <Route path={'*'} element={<App />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
};

Diese separate Applikation muss folgende Module benutzen:

export const AppPublic: React.FC = () => {
  return (
    <QuinoApplicationRoot
      setup={(app) => {
        QuinoCoreModule.use(app);
        UIModule.use(app);
        DevExpressModule.use(app);
        PublicModule.use(app);

       // Weitere Registrierungen und Usages
    >
      <PublicModuleRootView />
    </QuinoApplicationRoot>
  );
};

Berechtigungen

Die Berechtigungen für nicht authentifiziert User werden über die Rolle “anonymous” vergeben. Für jede Klasse, die im öffentlichen Bereich sichtbar sein soll, muss also eine Rollenberechtigung (mind. “lesen”) für die Anonymous-Rolle bestehen.

Widgets

Listen und Objekte

Wird im Client ein öffentlicher Applikationsteil wie oben beschrieben erstellt, funktionieren Listen- und Objektseiten per Default wie folgt:

  • Liste: /public/Person/LayoutA

  • Objekt: /public/Person/LayoutX/Id=ABC

Dabei ist der Typ vom angegebenen Layout ausschlaggebend. Wird ein Listen-Layout mit einer Id aufgerufen, wird diese Id nicht berücksichtigt.

Anpassungsmöglichkeiten

Im öffentlichen Bereich stehen für die visuelle Anpassung von Listen- und Objekt-Layouts folgende Optionen zur Verfügung:

  • WidthAspect: Breite bzw. Maximal-Breite des Inhalt-Blocks

  • MarginAspect: Margin um den Inhalt-Block herum

  • PaddingAspect: Padding innerhalb des Inhalt-Blocks

  • BackgroundColorAspect: Hintergrund des Inhalt-Blocks

Eigene Widgets

Es ist zudem möglich, eigene “Widgets” mit komplett frei definierbarem Inhalt zu registrieren. Dazu muss im Client ein “PublicBookmark” mit einem fixen Namen (z.B. “Demo”) registriert werden. Dieser Name erlaubt in der Url dann denn Zugriff auf das Widget (z.B. /public/demo).

Registrierungs-Beispiel:

app.registerStartupAction(Symbol.for('RegisterDemoBookmarkSerializer'), (app) => {
  const publicBookmarkProvider = app.get<IPublicBookmarkProvider>(PublicBookmarkProviderSymbol);
  publicBookmarkProvider.register(new DemoPublicBookmark(), Symbol.for('DemoBookmark'));
})
.moveTo(FrameworkStartupGroup);
  • No labels