Mein user_socket bekommtWie Berechtigungslogik auf der Basis Thema in einem Phoenix-Kanal hinzuzufügen, damit alle untergeordneten Themen haben die gleiche Logik
defmodule MyappServerWeb.UserSocket do
use Phoenix.Socket
## Channels
channel "public:login", MyappServerWeb.LoginChannel
channel "admin:navbar", MyappServerWeb.AdminNavbarChannel
channel "admin:dash", MyappServerWeb.AdminDashChannel
channel "admin:user", MyappServerWeb.UserChannel
end
Hier i zwei Berechtigungsstufe implementieren, dh öffentlichen und Admin. Alle Unterzweige unter diesen beiden Themen müssen dieselbe Berechtigungslogik erben, die für das übergeordnete Thema festgelegt wurde. Wie erreiche ich das? oder mache ich etwas falsch? (wirklich neu in der funktionalen Programmierung)
Erstellen Sie ein separates Modul mit der gemeinsamen Logik und rufen Sie dies innerhalb jeder Kanal 'join/3' Funktion auf? –
aber ich muss es in jedem Join/3-Funktionen aufrufen ... wenn ich diese Logik auf Basistopic anwenden könnte und wenn alle Unterthema geerbt wird, wäre das nett :) –
Dann erstellen Sie eine 'MyApp.AdminSocket' und legen Sie Ihre Logik in der Funktion 'connect/2'. Dann erzähle nur über die Admin-Kanäle und behalte deine 'MyApp.UserSocket', um nur über die öffentlichen Kanäle zu wissen. –