authsch

package module
v0.0.0-...-3ea90fd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2020 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

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"`
}

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

type Client struct {
	*oauth2.Config
}

Egy AuthSCH kliens

func CreateClient

func CreateClient(ClientID, ClientSecret string, Scopes []string) Client

Létrehoz egy klienset. 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() string

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

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL