tangled
alpha
login
or
join now
sullen.net
/
core
forked from
tangled.org/core
0
fork
atom
Monorepo for Tangled
0
fork
atom
overview
issues
pulls
pipelines
appview: oauth/handler: implement logout
anirudh.fi
10 months ago
4d3b93c1
ed80e5a5
verified
This commit was signed with the committer's
known signature
.
anirudh.fi
SSH Key Fingerprint:
SHA256:cz35vdbiWEzCNEfuL9fMC2JVIhtXavXBHrRjv8gxpAk=
+70
-4
4 changed files
expand all
collapse all
unified
split
appview
oauth
handler
handler.go
pages
templates
user
login.html
kvothe.dolphin-pentatonic.ts.net.crt
kvothe.dolphin-pentatonic.ts.net.key
+15
-2
appview/oauth/handler/handler.go
···
14
14
"github.com/lestrrat-go/jwx/v2/jwk"
15
15
"tangled.sh/tangled.sh/core/appview"
16
16
"tangled.sh/tangled.sh/core/appview/db"
17
17
+
"tangled.sh/tangled.sh/core/appview/middleware"
17
18
"tangled.sh/tangled.sh/core/appview/oauth"
18
19
"tangled.sh/tangled.sh/core/appview/oauth/client"
19
20
"tangled.sh/tangled.sh/core/appview/pages"
···
37
38
38
39
r.Get("/login", o.login)
39
40
r.Post("/login", o.login)
41
41
+
42
42
+
r.With(middleware.AuthMiddleware(o.OAuth)).Post("/logout", o.logout)
40
43
41
44
r.Get("/oauth/client-metadata.json", o.clientMetadata)
42
45
r.Get("/oauth/jwks.json", o.jwks)
···
60
63
"token_endpoint_auth_method": "private_key_jwt",
61
64
"token_endpoint_auth_signing_alg": "ES256",
62
65
}
63
63
-
64
64
-
fmt.Println("clientMetadata", metadata)
65
66
66
67
w.Header().Set("Content-Type", "application/json")
67
68
w.WriteHeader(http.StatusOK)
···
243
244
244
245
log.Println("session saved successfully")
245
246
247
247
+
http.Redirect(w, r, "/", http.StatusFound)
248
248
+
}
249
249
+
250
250
+
func (o *OAuthHandler) logout(w http.ResponseWriter, r *http.Request) {
251
251
+
err := o.OAuth.ClearSession(r, w)
252
252
+
if err != nil {
253
253
+
log.Println("failed to clear session:", err)
254
254
+
http.Redirect(w, r, "/", http.StatusFound)
255
255
+
return
256
256
+
}
257
257
+
258
258
+
log.Println("session cleared successfully")
246
259
http.Redirect(w, r, "/", http.StatusFound)
247
260
}
248
261
+2
-2
appview/pages/templates/user/login.html
···
27
27
</h2>
28
28
<form
29
29
class="mt-4 max-w-sm mx-auto"
30
30
-
hx-post="/oauth/login"
30
30
+
hx-post="/login"
31
31
hx-swap="none"
32
32
-
hx-disabled-elt="this"
32
32
+
hx-disabled-elt="#login-button"
33
33
>
34
34
<div class="flex flex-col">
35
35
<label for="handle">handle</label>
+48
kvothe.dolphin-pentatonic.ts.net.crt
···
1
1
+
-----BEGIN CERTIFICATE-----
2
2
+
MIIDrTCCAzOgAwIBAgISBZtKgBCUc/UBeE224CLaBBFJMAoGCCqGSM49BAMDMDIx
3
3
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
4
4
+
NTAeFw0yNTA1MDkxMjUwMjNaFw0yNTA4MDcxMjUwMjJaMCsxKTAnBgNVBAMTIGt2
5
5
+
b3RoZS5kb2xwaGluLXBlbnRhdG9uaWMudHMubmV0MFkwEwYHKoZIzj0CAQYIKoZI
6
6
+
zj0DAQcDQgAEAmfzlJtDI6zQPvUzwM8mxFWAJluFHtyq3KHmKSqfjDdwyX05q4/R
7
7
+
jhoXWF7x3Vd9S+V8JGIBiMoNgCQ+XpgYXaOCAi4wggIqMA4GA1UdDwEB/wQEAwIH
8
8
+
gDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
9
9
+
BgNVHQ4EFgQUMcRA7pwt4yXVuUO3pQLTwh4auncwHwYDVR0jBBgwFoAUnytfzzwh
10
10
+
T50Et+0rLMTGcIvS1w0wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRw
11
11
+
Oi8vZTUuaS5sZW5jci5vcmcvMCsGA1UdEQQkMCKCIGt2b3RoZS5kb2xwaGluLXBl
12
12
+
bnRhdG9uaWMudHMubmV0MBMGA1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQw
13
13
+
IqAgoB6GHGh0dHA6Ly9lNS5jLmxlbmNyLm9yZy83NC5jcmwwggEEBgorBgEEAdZ5
14
14
+
AgQCBIH1BIHyAPAAdQAN4fIwK9MNwUBiEgnqVS78R3R8sdfpMO8OQh60fk6qNAAA
15
15
+
AZa1TlxzAAAEAwBGMEQCIEDpoiH+6miZzTk44vJyyfnzrb9/MgZVey/82qKgPcoi
16
16
+
AiASPKLS20X3nlo10Wmfejac4mMyks9FuR6MJ4mUqeroLQB3AKRCxQZJYGFUjw/U
17
17
+
6pz7ei0mRU2HqX8v30VZ9idPOoRUAAABlrVOXHUAAAQDAEgwRgIhAK81NbYOshL2
18
18
+
sas1ARp68siObt6/i44JxWWXgVjG2JETAiEAgjsU14b0+f8iRyFfforu7o3mmJ+J
19
19
+
05ZDqxZv5SwvI4QwCgYIKoZIzj0EAwMDaAAwZQIxAK8HPrFeNx9fpyZ188QVGNUW
20
20
+
ulqjYC0DKfU0ehzTOW1QUi//UxH+5C53fasVjRZr3gIwBWcyEeemIOt5Gt1qxkXb
21
21
+
el3SirHpHiwyY8940+3NBbks2NO2Ty5QsSVKayWOTWQ6
22
22
+
-----END CERTIFICATE-----
23
23
+
-----BEGIN CERTIFICATE-----
24
24
+
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
25
25
+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
26
26
+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
27
27
+
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
28
28
+
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
29
29
+
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
30
30
+
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
31
31
+
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
32
32
+
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
33
33
+
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
34
34
+
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
35
35
+
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
36
36
+
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
37
37
+
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
38
38
+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
39
39
+
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
40
40
+
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
41
41
+
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
42
42
+
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
43
43
+
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
44
44
+
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
45
45
+
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
46
46
+
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
47
47
+
VQD9F6Na/+zmXCc=
48
48
+
-----END CERTIFICATE-----
+5
kvothe.dolphin-pentatonic.ts.net.key
···
1
1
+
-----BEGIN EC PRIVATE KEY-----
2
2
+
MHcCAQEEIMJO0WxtmpDeZ7747hBOX3VCxAjybvqlhRpQhyfmfoiaoAoGCCqGSM49
3
3
+
AwEHoUQDQgAEAmfzlJtDI6zQPvUzwM8mxFWAJluFHtyq3KHmKSqfjDdwyX05q4/R
4
4
+
jhoXWF7x3Vd9S+V8JGIBiMoNgCQ+XpgYXQ==
5
5
+
-----END EC PRIVATE KEY-----