## Radioamaterski informacijski sistem (RAIS) Žiga Kralj R4B Mentor: Aleš Volčini, prof. --- ## Zakaj? Za potrebe RKV Nadgradnja starega sistema --- ## Zaledje in ## Ospredje --- ## Zaledje WEB2 aplikacija Dostop preko spletnega APV -- ## GO (Golang) - Prevajan jezik - Statično tipiran - Hitro prevajanje - Hitro izvajanje -- ## PostgreSQL - Trenutno najnaprednejši odprtokodni SUPB - Se drži SQL standarda in ga razširja -- ## GraphQL - Odprtokodni jezik za APV-je - Prihranimo na poizvedbah do strežnika --
-- Pogled uporabnikovih pravic: ```sql CREATE VIEW user_permissions AS ( SELECT user_id, permission_id FROM user_has_permission WHERE allow = true UNION SELECT uig.user_id, ghp.permission_id FROM user_in_group uig INNER JOIN groups g ON (uig.group_id = g.id) INNER JOIN group_has_permission ghp ON (g.id = ghp.group_id) LEFT JOIN user_has_permission uhp ON ( uhp.permission_id = ghp.permission_id ) WHERE uhp.allow IS NULL OR uhp.allow = true ); ``` -- Konfiguracija strežnika: 1. Preko spremeljivk okolja 2. Preko konfiguracijske datoteke ```json { "DB": { "host": "127.0.0.1", "port": 5432, "user": "uporabnik", "password": "zahtevnogeslo", "dbname": "rais" }, "jwt_auth": "ABCDEFG", "jwt_refresh": "GFEDCBA", "jwt_issuer": "Radioklub Vegova", "serve_address": ":5900", "cors_allow": "*" } ``` -- ![JWT](p/rais/jwt_stran.png) -- Končne točke ```py /auth/login/ # Prijava /auth/refresh/ # Pridobitev avtentikacijskega žetona /auth/logout/ # Odjava /graphql/ # Manipulacija s podatki ``` -- Sejni žeton: ```json { "jti": "78", "iat": 1655395810, "iss": "Radioklub Vegova", "sub": "1" } ``` Avtentikacijski žeton: ```json { "typ": "user", "rti": "78", "exp": 1655482216, "iat": 1655395816, "iss": "Radioklub Vegova", "sub": "1" } ``` --- ## Ospredje http://localhost:5500/