Documentation ¶
Overview ¶
Package authsch AuthSCH bejelentkezés könyvtár Go-hoz
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccDetails ¶
type AccDetails struct { InternalID string `json:"internal_id"` Surname string `json:"sn"` GivenName string `json:"givenName"` Mail string `json:"mail"` DisplayName string `json:"displayName"` LinkedAccounts struct { Bme string `json:"bme"` SchAcc string `json:"schacc"` Vir int `json:"vir"` VirUid string `json:"virUid"` } `json:"linkedAccounts"` LinkedAccountsLastSync struct { Bme int `json:"bme"` SchAcc int `json:"schacc"` Vir int `json:"vir"` } `json:"lastSync"` EduPersonEntitlement []struct { Id int `json:"id"` Name string `json:"name"` Status string `json:"status"` Title []string `json:"title"` Start string `json:"start"` End string `json:"end"` } `json:"eduPersonEntitlement"` Mobile string `json:"mobile"` ADMembership []string `json:"admembership"` BMEUnitScope []string `json:"bmeunitscope"` }
AccDetails egy felhasználó lekérhető adatai. A scope-októl függően az InternalID-n kívül a többi mező üres lehet. A scope-oktról több infót itt találsz: https://git.sch.bme.hu/kszk/authsch/-/wikis/api
Example ¶
Ez a webszerver a /-ben átirányít AuthSCH-s bejelentkezésre, ahol minden támogatott scope-ot kér, majd a kapott parse-olt adatot JSON-ként visszaküldi a felhasználónak.
package main import ( "encoding/json" "log" "net/http" ) var auth = CreateClient( "26736548200992581545", "HnweMcB0YNOadjcx9WvS0fsLPiX2pS6w6rRIKTHigV0A6bx4yjMxE60TdWKJoG7kxNs9g1gDMgDH92Bw", []string{ "basic", "displayName", "sn", "givenName", "mail", "linkedAccounts", "eduPersonEntitlement", "mobile", "niifEduPersonAttendedCourse", // nem jó "entrants", // nem tudom mi "admembership", "bmeunitscope", }, ) var authHandler = auth.GetLoginHandler(func(details *AccDetails, w http.ResponseWriter, r *http.Request) { b, e := json.MarshalIndent(details, "", " ") if e != nil { panic(e) } _, _ = w.Write(b) }, func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("Couldn't log you in")) }) var mux = http.NewServeMux() func init() { mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, auth.GetAuthURL(), http.StatusFound) }) mux.Handle("/login/", authHandler) } // Ez a webszerver a /-ben átirányít AuthSCH-s bejelentkezésre, ahol minden támogatott scope-ot kér, // majd a kapott parse-olt adatot JSON-ként visszaküldi a felhasználónak. func main() { log.Fatal(http.ListenAndServe(":8080", mux)) }
Output:
type Client ¶
Client gy AuthSCH kliens
func CreateClient ¶
A CreateClient létrehoz egy klienst. Meg kell adni az AuthSCH-n fejlesztői konzolon kapott azonosítót és kulcsot, illetve a kért scope-okat A scope-oktról több infót itt találsz: https://git.sch.bme.hu/kszk/authsch/-/wikis/api
func (*Client) GetAuthURL ¶
func (c *Client) GetAuthURL(opts ...oauth2.AuthCodeOption) string
A GetAuthURL ad egy URL-t az AuthSCH-s bejelentkező ablakhoz, ide kell irányítani a usert. Az AuthSCH majd visszairányítja a usert a megadott URL-re.
func (*Client) GetLoginHandler ¶
func (c *Client) GetLoginHandler( next func(details *AccDetails, w http.ResponseWriter, r *http.Request), errorCallback func(w http.ResponseWriter, r *http.Request), ) http.Handler
A GetLoginHandler egy http.Handler-t ad vissza, amit be kell kötni arra az URL-re, ahova az AuthSCH átirányít A next paraméter megkapja a user adatait a details változóban, illetve egy http.ResponseWriter-t és *http.Request-et is, így az a függvény célszerűen eltárolja a user adatait, beállít egy sütit, majd átirányítja. Az errorCallback paraméterben megadott függvény pedig hibás belépés esetén fut le, ott célszerű egy hibaoldalt megjeleníteni.