authsch

package module
v0.0.0-...-7c42b1b Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: GPL-3.0 Imports: 6 Imported by: 0

README

AuthSCH könyvtár Go-hoz

Dokumentáció

https://pkg.go.dev/git.sch.bme.hu/kszk/opensource/authsch-go

Használat

  1. regisztráld az appod itt: https://auth.sch.bme.hu/console/index
  2. találd ki, hogy milyen scope-ok kellenek, ehhez help itt van: https://git.sch.bme.hu/kszk/authsch/-/wikis/api
  3. töltsd le a könyvtárt:
go get -u git.sch.bme.hu/kszk/opensource/authsch-go
  1. hívd meg az authsch.CreateClient-et és használd, erre egy példa van a doksiban: https://pkg.go.dev/git.sch.bme.hu/kszk/opensource/authsch-go#example-AccDetails

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

type Client struct {
	*oauth2.Config
}

Client gy AuthSCH kliens

func CreateClient

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

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.

Jump to

Keyboard shortcuts

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