auth/web/authorize.qtpl.go

523 lines
12 KiB
Go
Raw Normal View History

// Code generated by qtc from "authorize.qtpl". DO NOT EDIT.
// See https://github.com/valyala/quicktemplate for details.
//line web/authorize.qtpl:1
package web
//line web/authorize.qtpl:1
import (
"source.toby3d.me/toby3d/auth/internal/domain"
)
//line web/authorize.qtpl:5
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
//line web/authorize.qtpl:5
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
//line web/authorize.qtpl:5
2022-01-20 19:50:15 +00:00
type AuthorizePage struct {
BaseOf
2022-01-31 16:15:38 +00:00
Scope domain.Scopes
CodeChallengeMethod domain.CodeChallengeMethod
ResponseType domain.ResponseType
Client *domain.Client
2022-01-20 19:50:15 +00:00
Me *domain.Me
2022-01-31 16:15:38 +00:00
RedirectURI *domain.URL
Providers []*domain.Provider
CSRF []byte
CodeChallenge string
State string
}
//line web/authorize.qtpl:19
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) streamtitle(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:19
qw422016.N().S(`
`)
//line web/authorize.qtpl:20
2023-08-07 03:10:00 +00:00
if p.Client.Name != "" {
//line web/authorize.qtpl:20
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:21
2023-08-07 03:10:00 +00:00
p.streamt(qw422016, "Authorize %s", p.Client.Name)
//line web/authorize.qtpl:21
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:22
2022-01-20 19:50:15 +00:00
} else {
//line web/authorize.qtpl:22
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:23
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, "Authorize application")
//line web/authorize.qtpl:23
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:24
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:24
qw422016.N().S(`
`)
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:25
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) writetitle(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:25
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:25
2023-08-06 00:42:38 +00:00
p.streamtitle(qw422016)
//line web/authorize.qtpl:25
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:25
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) title() string {
//line web/authorize.qtpl:25
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:25
2023-08-06 00:42:38 +00:00
p.writetitle(qb422016)
//line web/authorize.qtpl:25
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:25
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:25
return qs422016
//line web/authorize.qtpl:25
}
//line web/authorize.qtpl:27
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) streambody(qw422016 *qt422016.Writer) {
//line web/authorize.qtpl:27
qw422016.N().S(`
<header>
`)
2022-01-31 16:15:38 +00:00
//line web/authorize.qtpl:29
2023-08-07 03:10:00 +00:00
if p.Client.Logo != nil {
2022-01-31 16:15:38 +00:00
//line web/authorize.qtpl:29
qw422016.N().S(`
<img class=""
crossorigin="anonymous"
decoding="async"
height="140"
importance="high"
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
src="`)
//line web/authorize.qtpl:37
2023-08-07 03:10:00 +00:00
qw422016.E().S(p.Client.Logo.String())
//line web/authorize.qtpl:37
qw422016.N().S(`"
alt="`)
//line web/authorize.qtpl:38
2023-08-07 03:10:00 +00:00
qw422016.E().S(p.Client.Name)
//line web/authorize.qtpl:38
qw422016.N().S(`"
width="140">
`)
//line web/authorize.qtpl:40
}
//line web/authorize.qtpl:40
qw422016.N().S(`
<h2>
`)
//line web/authorize.qtpl:43
2023-08-07 03:10:00 +00:00
if p.Client.URL != nil {
//line web/authorize.qtpl:43
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
<a href="`)
//line web/authorize.qtpl:44
2023-08-07 03:10:00 +00:00
qw422016.E().S(p.Client.URL.String())
//line web/authorize.qtpl:44
2022-01-20 19:50:15 +00:00
qw422016.N().S(`">
`)
//line web/authorize.qtpl:45
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:45
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:46
2023-08-07 03:10:00 +00:00
if p.Client.Name != "" {
//line web/authorize.qtpl:46
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:47
2023-08-07 03:10:00 +00:00
qw422016.E().S(p.Client.Name)
//line web/authorize.qtpl:47
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:48
2022-01-20 19:50:15 +00:00
} else {
//line web/authorize.qtpl:48
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:49
2022-01-20 19:50:15 +00:00
qw422016.E().S(p.Client.ID.String())
//line web/authorize.qtpl:49
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:50
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:50
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:51
2023-08-07 03:10:00 +00:00
if p.Client.URL != nil {
//line web/authorize.qtpl:51
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
</a>
`)
//line web/authorize.qtpl:53
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:53
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
</h2>
</header>
2022-01-20 19:50:15 +00:00
<main>
<aside>
`)
//line web/authorize.qtpl:59
if p.CodeChallengeMethod != domain.CodeChallengeMethodUnd && p.CodeChallenge != "" {
//line web/authorize.qtpl:59
qw422016.N().S(`
<p class="with-icon">
<span class="icon"
role="img"
aria-label="closed lock with key">🔐</span>
`)
//line web/authorize.qtpl:65
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, `This client uses %sPKCE%s with the %s%s%s method.`, `<abbr title="Proof of Key Code Exchange">`,
`</abbr>`, `<code>`, p.CodeChallengeMethod, `</code>`)
//line web/authorize.qtpl:66
qw422016.N().S(`
</p>
`)
//line web/authorize.qtpl:68
} else {
//line web/authorize.qtpl:68
qw422016.N().S(`
<details>
<summary class="with-icon">
<span class="icon"
role="img"
aria-label="unlock">🔓</span>
`)
//line web/authorize.qtpl:75
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, `This client does not use %sPKCE%s!`, `<abbr title="Proof of Key Code Exchange">`, `</abbr>`)
//line web/authorize.qtpl:75
qw422016.N().S(`
</summary>
<p>
`)
//line web/authorize.qtpl:78
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, `%sProof of Key Code Exchange%s is a mechanism that protects against attackers in the middle hijacking `+
`your application's authentication process. You can still authorize this application without this protection, `+
`but you must independently verify the security of this connection. If you have any doubts - stop the process `+
` and contact the developers.`, `<dfn id="PKCE">`, `</dfn>`)
//line web/authorize.qtpl:81
qw422016.N().S(`
</p>
</details>
`)
//line web/authorize.qtpl:84
}
//line web/authorize.qtpl:84
qw422016.N().S(`
</aside>
<form class=""
accept-charset="utf-8"
action="/authorize/verify"
autocomplete="off"
enctype="application/x-www-form-urlencoded"
method="post"
novalidate="true"
target="_self">
`)
//line web/authorize.qtpl:96
2022-01-20 19:50:15 +00:00
if p.CSRF != nil {
//line web/authorize.qtpl:96
qw422016.N().S(`
<input type="hidden"
name="_csrf"
value="`)
//line web/authorize.qtpl:99
2022-01-20 19:50:15 +00:00
qw422016.E().Z(p.CSRF)
//line web/authorize.qtpl:99
qw422016.N().S(`">
`)
//line web/authorize.qtpl:100
}
//line web/authorize.qtpl:100
qw422016.N().S(`
`)
//line web/authorize.qtpl:102
2022-01-20 19:50:15 +00:00
for key, val := range map[string]string{
"client_id": p.Client.ID.String(),
"redirect_uri": p.RedirectURI.String(),
"response_type": p.ResponseType.String(),
"state": p.State,
} {
//line web/authorize.qtpl:107
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
<input type="hidden"
name="`)
//line web/authorize.qtpl:109
2022-01-20 19:50:15 +00:00
qw422016.E().S(key)
//line web/authorize.qtpl:109
2022-01-20 19:50:15 +00:00
qw422016.N().S(`"
value="`)
//line web/authorize.qtpl:110
2022-01-20 19:50:15 +00:00
qw422016.E().S(val)
//line web/authorize.qtpl:110
qw422016.N().S(`">
`)
//line web/authorize.qtpl:111
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:111
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:113
2022-01-20 19:50:15 +00:00
if len(p.Scope) > 0 {
//line web/authorize.qtpl:113
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
<fieldset>
<legend>`)
//line web/authorize.qtpl:115
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, "Scopes")
//line web/authorize.qtpl:115
2022-01-20 19:50:15 +00:00
qw422016.N().S(`</legend>
`)
//line web/authorize.qtpl:117
2022-01-20 19:50:15 +00:00
for _, scope := range p.Scope {
//line web/authorize.qtpl:117
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
<div>
<label>
<input type="checkbox"
name="scope[]"
value="`)
//line web/authorize.qtpl:122
2022-01-20 19:50:15 +00:00
qw422016.E().S(scope.String())
//line web/authorize.qtpl:122
2022-01-20 19:50:15 +00:00
qw422016.N().S(`"
checked>
2022-01-20 19:50:15 +00:00
`)
//line web/authorize.qtpl:125
2022-01-20 19:50:15 +00:00
qw422016.E().S(scope.String())
//line web/authorize.qtpl:125
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
</label>
</div>
`)
//line web/authorize.qtpl:128
2022-01-20 19:50:15 +00:00
}
//line web/authorize.qtpl:128
2022-01-20 19:50:15 +00:00
qw422016.N().S(`
</fieldset>
`)
//line web/authorize.qtpl:130
} else {
//line web/authorize.qtpl:130
qw422016.N().S(`
<aside>
<p>`)
//line web/authorize.qtpl:132
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, `No scopes is requested: the application will only get your profile URL.`)
//line web/authorize.qtpl:132
qw422016.N().S(`</p>
</aside>
`)
//line web/authorize.qtpl:134
}
//line web/authorize.qtpl:134
qw422016.N().S(`
`)
//line web/authorize.qtpl:136
2022-01-20 19:50:15 +00:00
if p.CodeChallenge != "" {
//line web/authorize.qtpl:136
qw422016.N().S(`
2023-01-16 10:19:22 +00:00
`)
//line web/authorize.qtpl:137
2023-01-16 10:19:22 +00:00
for key, val := range map[string]string{
"code_challenge": p.CodeChallenge,
"code_challenge_method": p.CodeChallengeMethod.String(),
} {
//line web/authorize.qtpl:140
2023-01-16 10:19:22 +00:00
qw422016.N().S(`
<input type="hidden"
2023-01-16 10:19:22 +00:00
name="`)
//line web/authorize.qtpl:142
2023-01-16 10:19:22 +00:00
qw422016.E().S(key)
//line web/authorize.qtpl:142
2023-01-16 10:19:22 +00:00
qw422016.N().S(`"
value="`)
//line web/authorize.qtpl:143
2023-01-16 10:19:22 +00:00
qw422016.E().S(val)
//line web/authorize.qtpl:143
2023-01-16 10:19:22 +00:00
qw422016.N().S(`">
`)
//line web/authorize.qtpl:144
2023-01-16 10:19:22 +00:00
}
//line web/authorize.qtpl:144
2023-01-16 10:19:22 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:145
2023-01-16 10:19:22 +00:00
}
//line web/authorize.qtpl:145
qw422016.N().S(`
`)
//line web/authorize.qtpl:147
if p.Me != nil {
//line web/authorize.qtpl:147
qw422016.N().S(`
<input type="hidden"
name="me"
value="`)
//line web/authorize.qtpl:150
qw422016.E().S(p.Me.String())
//line web/authorize.qtpl:150
qw422016.N().S(`">
`)
//line web/authorize.qtpl:151
}
//line web/authorize.qtpl:151
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
`)
//line web/authorize.qtpl:153
2022-01-31 16:15:38 +00:00
if len(p.Providers) > 0 {
//line web/authorize.qtpl:153
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
<select name="provider"
autocomplete
required>
2022-01-31 16:15:38 +00:00
`)
//line web/authorize.qtpl:158
2022-01-31 16:15:38 +00:00
for _, provider := range p.Providers {
//line web/authorize.qtpl:158
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
<option value="`)
//line web/authorize.qtpl:159
2022-01-31 16:15:38 +00:00
qw422016.E().S(provider.UID)
//line web/authorize.qtpl:159
2022-01-31 16:15:38 +00:00
qw422016.N().S(`"
`)
//line web/authorize.qtpl:160
2022-01-31 16:15:38 +00:00
if provider.UID == "mastodon" {
//line web/authorize.qtpl:160
2022-01-31 16:15:38 +00:00
qw422016.N().S(`selected`)
//line web/authorize.qtpl:160
2022-01-31 16:15:38 +00:00
}
//line web/authorize.qtpl:160
2022-01-31 16:15:38 +00:00
qw422016.N().S(`>
`)
//line web/authorize.qtpl:162
2022-01-31 16:15:38 +00:00
qw422016.E().S(provider.Name)
//line web/authorize.qtpl:162
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
</option>
`)
//line web/authorize.qtpl:164
2022-01-31 16:15:38 +00:00
}
//line web/authorize.qtpl:164
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
</select>
`)
//line web/authorize.qtpl:166
2022-01-31 16:15:38 +00:00
} else {
//line web/authorize.qtpl:166
2022-01-31 16:15:38 +00:00
qw422016.N().S(`
<input type="hidden"
name="provider"
value="direct">
`)
//line web/authorize.qtpl:170
2022-01-31 16:15:38 +00:00
}
//line web/authorize.qtpl:170
qw422016.N().S(`
<button type="submit"
name="authorize"
value="deny">
`)
//line web/authorize.qtpl:176
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, "Deny")
//line web/authorize.qtpl:176
qw422016.N().S(`
</button>
<button type="submit"
name="authorize"
value="allow">
`)
//line web/authorize.qtpl:183
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, "Allow")
//line web/authorize.qtpl:183
qw422016.N().S(`
</button>
<aside>
<p>`)
//line web/authorize.qtpl:187
2023-08-06 00:42:38 +00:00
p.streamt(qw422016, `You will be redirected to %s%s%s`, `<code>`, p.RedirectURI, `</code>`)
//line web/authorize.qtpl:187
qw422016.N().S(`</p>
</aside>
</form>
</main>
`)
//line web/authorize.qtpl:191
}
//line web/authorize.qtpl:191
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) writebody(qq422016 qtio422016.Writer) {
//line web/authorize.qtpl:191
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/authorize.qtpl:191
2023-08-06 00:42:38 +00:00
p.streambody(qw422016)
//line web/authorize.qtpl:191
qt422016.ReleaseWriter(qw422016)
//line web/authorize.qtpl:191
}
//line web/authorize.qtpl:191
2023-08-06 00:42:38 +00:00
func (p *AuthorizePage) body() string {
//line web/authorize.qtpl:191
qb422016 := qt422016.AcquireByteBuffer()
//line web/authorize.qtpl:191
2023-08-06 00:42:38 +00:00
p.writebody(qb422016)
//line web/authorize.qtpl:191
qs422016 := string(qb422016.B)
//line web/authorize.qtpl:191
qt422016.ReleaseByteBuffer(qb422016)
//line web/authorize.qtpl:191
return qs422016
//line web/authorize.qtpl:191
}