diff --git a/views/auth.qtpl b/views/auth.qtpl
index d51e588..f3f257a 100644
--- a/views/auth.qtpl
+++ b/views/auth.qtpl
@@ -1,28 +1,30 @@
{% import "github.com/bouncepaw/mycorrhiza/user" %}
+{% import "github.com/bouncepaw/mycorrhiza/util" %}
{% func LoginHTML() %}
{% if user.AuthUsed %}
- Login
-
diff --git a/views/auth.qtpl.go b/views/auth.qtpl.go
index fec28c1..74d83b1 100644
--- a/views/auth.qtpl.go
+++ b/views/auth.qtpl.go
@@ -7,218 +7,226 @@ package views
//line views/auth.qtpl:1
import "github.com/bouncepaw/mycorrhiza/user"
-//line views/auth.qtpl:3
+//line views/auth.qtpl:2
+import "github.com/bouncepaw/mycorrhiza/util"
+
+//line views/auth.qtpl:4
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
-//line views/auth.qtpl:3
+//line views/auth.qtpl:4
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
-//line views/auth.qtpl:3
+//line views/auth.qtpl:4
func StreamLoginHTML(qw422016 *qt422016.Writer) {
-//line views/auth.qtpl:3
+//line views/auth.qtpl:4
qw422016.N().S(`
`)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
}
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
func WriteLoginHTML(qq422016 qtio422016.Writer) {
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
StreamLoginHTML(qw422016)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
qt422016.ReleaseWriter(qw422016)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
}
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
func LoginHTML() string {
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
qb422016 := qt422016.AcquireByteBuffer()
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
WriteLoginHTML(qb422016)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
qs422016 := string(qb422016.B)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
qt422016.ReleaseByteBuffer(qb422016)
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
return qs422016
-//line views/auth.qtpl:30
+//line views/auth.qtpl:32
}
-//line views/auth.qtpl:32
+//line views/auth.qtpl:34
func StreamLoginErrorHTML(qw422016 *qt422016.Writer, err string) {
-//line views/auth.qtpl:32
+//line views/auth.qtpl:34
qw422016.N().S(`
`)
-//line views/auth.qtpl:36
+//line views/auth.qtpl:38
switch err {
-//line views/auth.qtpl:37
+//line views/auth.qtpl:39
case "unknown username":
-//line views/auth.qtpl:37
+//line views/auth.qtpl:39
qw422016.N().S(`
Unknown username.
`)
-//line views/auth.qtpl:39
+//line views/auth.qtpl:41
case "wrong password":
-//line views/auth.qtpl:39
+//line views/auth.qtpl:41
qw422016.N().S(`
Wrong password.
`)
-//line views/auth.qtpl:41
+//line views/auth.qtpl:43
default:
-//line views/auth.qtpl:41
+//line views/auth.qtpl:43
qw422016.N().S(`
`)
-//line views/auth.qtpl:42
+//line views/auth.qtpl:44
qw422016.E().S(err)
-//line views/auth.qtpl:42
+//line views/auth.qtpl:44
qw422016.N().S(`
`)
-//line views/auth.qtpl:43
+//line views/auth.qtpl:45
}
-//line views/auth.qtpl:43
+//line views/auth.qtpl:45
qw422016.N().S(`
← Try again
`)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
}
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
func WriteLoginErrorHTML(qq422016 qtio422016.Writer, err string) {
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
StreamLoginErrorHTML(qw422016, err)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
qt422016.ReleaseWriter(qw422016)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
}
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
func LoginErrorHTML(err string) string {
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
qb422016 := qt422016.AcquireByteBuffer()
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
WriteLoginErrorHTML(qb422016, err)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
qs422016 := string(qb422016.B)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
qt422016.ReleaseByteBuffer(qb422016)
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
return qs422016
-//line views/auth.qtpl:48
+//line views/auth.qtpl:50
}
-//line views/auth.qtpl:50
+//line views/auth.qtpl:52
func StreamLogoutHTML(qw422016 *qt422016.Writer, can bool) {
-//line views/auth.qtpl:50
+//line views/auth.qtpl:52
qw422016.N().S(`
`)
-//line views/auth.qtpl:54
+//line views/auth.qtpl:56
if can {
-//line views/auth.qtpl:54
+//line views/auth.qtpl:56
qw422016.N().S(`
Log out?
Confirm
Cancel
`)
-//line views/auth.qtpl:58
+//line views/auth.qtpl:60
} else {
-//line views/auth.qtpl:58
+//line views/auth.qtpl:60
qw422016.N().S(`
You cannot log out because you are not logged in.
Login
← Home
`)
-//line views/auth.qtpl:62
+//line views/auth.qtpl:64
}
-//line views/auth.qtpl:62
+//line views/auth.qtpl:64
qw422016.N().S(`
`)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
}
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
func WriteLogoutHTML(qq422016 qtio422016.Writer, can bool) {
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
StreamLogoutHTML(qw422016, can)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
qt422016.ReleaseWriter(qw422016)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
}
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
func LogoutHTML(can bool) string {
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
qb422016 := qt422016.AcquireByteBuffer()
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
WriteLogoutHTML(qb422016, can)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
qs422016 := string(qb422016.B)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
qt422016.ReleaseByteBuffer(qb422016)
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
return qs422016
-//line views/auth.qtpl:66
+//line views/auth.qtpl:68
}