diff options
| -rw-r--r-- | pkg/handler/auth/login.go | 20 | ||||
| -rw-r--r-- | pkg/handler/router.go | 3 | ||||
| -rw-r--r-- | scss/main.scss | 14 | ||||
| -rw-r--r-- | templates/login.qtpl | 31 | ||||
| -rw-r--r-- | templates/login.qtpl.go | 173 | ||||
| -rw-r--r-- | templates/navbar.qtpl | 2 | ||||
| -rw-r--r-- | templates/navbar.qtpl.go | 6 | 
7 files changed, 244 insertions, 5 deletions
diff --git a/pkg/handler/auth/login.go b/pkg/handler/auth/login.go new file mode 100644 index 0000000..7e77a67 --- /dev/null +++ b/pkg/handler/auth/login.go @@ -0,0 +1,20 @@ +package auth + +import ( +	"net/http" + +	"git.gabrielgio.me/cerrado/pkg/ext" +	"git.gabrielgio.me/cerrado/templates" +) + +type ( +	LoginHandler struct{} +) + +func (g *LoginHandler) Login(w http.ResponseWriter, r *http.Request) error { +	ext.SetHTML(w) + +	login := &templates.LoginPage{} +	templates.WritePageTemplate(w, login) +	return nil +} diff --git a/pkg/handler/router.go b/pkg/handler/router.go index a2ac98a..32bd78a 100644 --- a/pkg/handler/router.go +++ b/pkg/handler/router.go @@ -6,6 +6,7 @@ import (  	serverconfig "git.gabrielgio.me/cerrado/pkg/config"  	"git.gabrielgio.me/cerrado/pkg/ext"  	"git.gabrielgio.me/cerrado/pkg/handler/about" +	"git.gabrielgio.me/cerrado/pkg/handler/auth"  	"git.gabrielgio.me/cerrado/pkg/handler/git"  	"git.gabrielgio.me/cerrado/pkg/handler/static"  	"git.gabrielgio.me/cerrado/pkg/service" @@ -21,6 +22,7 @@ func MountHandler(  	var (  		gitHandler   = git.NewGitHandler(gitService, configRepo)  		aboutHandler = about.NewAboutHandler(configRepo) +		loginHandler = &auth.LoginHandler{}  	)  	staticHandler, err := static.ServeStaticHandler() @@ -33,6 +35,7 @@ func MountHandler(  	mux.AddMiddleware(ext.Log)  	mux.HandleFunc("/static/{file}", staticHandler) +	mux.HandleFunc("/login/{$}", loginHandler.Login)  	mux.HandleFunc("/{name}/about/{$}", gitHandler.About)  	mux.HandleFunc("/{name}/", gitHandler.Summary)  	mux.HandleFunc("/{name}/refs/{$}", gitHandler.Refs) diff --git a/scss/main.scss b/scss/main.scss index b76423f..21701f5 100644 --- a/scss/main.scss +++ b/scss/main.scss @@ -5,6 +5,10 @@ $base-font-size: 1rem;  $font-family-monospace: monospace;  $headings-margin-bottom: 0; +$input-border-radius: 0; + +$btn-border-radius: 0; +  // basic functionality  @import "bootstrap/scss/_functions.scss";  @import "bootstrap/scss/_variables.scss"; @@ -21,6 +25,8 @@ $navbar-nav-link-padding-x: $spacer;  @import "bootstrap/scss/_nav.scss";  @import "bootstrap/scss/_navbar.scss";  @import "bootstrap/scss/_grid.scss"; +@import "bootstrap/scss/_forms.scss"; +@import "bootstrap/scss/_buttons.scss";  @import "tree.scss";  // TODO remove once is not needed @@ -80,7 +86,6 @@ $utilities: (      class: ms,      values: map-merge($spacers, (auto: auto))    ), -  );  @import "bootstrap/scss/utilities/_api.scss"; @@ -162,3 +167,10 @@ pre {      max-width: calc(100% - calc(2 * #{$spacer}));    }  } + +input { +     width: 100%;  +     box-sizing: border-box; +     -webkit-box-sizing:border-box; +     -moz-box-sizing: border-box; +} diff --git a/templates/login.qtpl b/templates/login.qtpl new file mode 100644 index 0000000..eee5711 --- /dev/null +++ b/templates/login.qtpl @@ -0,0 +1,31 @@ +{% code +type LoginPage struct { +} +%} + +{% func (p *LoginPage) Title() %}Hello{% endfunc %} + +{% func (p *LoginPage) Navbar() %}{%= Navbar(Login) %}{% endfunc %} + +{% func (p *LoginPage) Content() %} +<div class="row"> +  <div class="col-md-6 offset-md-3"> +    <form> +      <div class="form-group m-3"> +        <label for="username" class="form-label">Username</label> +        <input type="text" class="form-control" id="username" aria-describedby="emailHelp"> +      </div> +      <div class="form-group m-3"> +        <label for="password" class="form-label">Password</label> +        <input type="password" class="form-control" id="password"> +      </div> +      <div class="form-group m-3"> +        <button type="submit" class="btn btn-primary">Login</button> +      </div> +    </form> +  </div> +</div> +{% endfunc %} + +{% func (p *LoginPage) Script() %} +{% endfunc %} diff --git a/templates/login.qtpl.go b/templates/login.qtpl.go new file mode 100644 index 0000000..0d3d2b0 --- /dev/null +++ b/templates/login.qtpl.go @@ -0,0 +1,173 @@ +// Code generated by qtc from "login.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line templates/login.qtpl:1 +package templates + +//line templates/login.qtpl:1 +import ( +	qtio422016 "io" + +	qt422016 "github.com/valyala/quicktemplate" +) + +//line templates/login.qtpl:1 +var ( +	_ = qtio422016.Copy +	_ = qt422016.AcquireByteBuffer +) + +//line templates/login.qtpl:2 +type LoginPage struct { +} + +//line templates/login.qtpl:6 +func (p *LoginPage) StreamTitle(qw422016 *qt422016.Writer) { +//line templates/login.qtpl:6 +	qw422016.N().S(`Hello`) +//line templates/login.qtpl:6 +} + +//line templates/login.qtpl:6 +func (p *LoginPage) WriteTitle(qq422016 qtio422016.Writer) { +//line templates/login.qtpl:6 +	qw422016 := qt422016.AcquireWriter(qq422016) +//line templates/login.qtpl:6 +	p.StreamTitle(qw422016) +//line templates/login.qtpl:6 +	qt422016.ReleaseWriter(qw422016) +//line templates/login.qtpl:6 +} + +//line templates/login.qtpl:6 +func (p *LoginPage) Title() string { +//line templates/login.qtpl:6 +	qb422016 := qt422016.AcquireByteBuffer() +//line templates/login.qtpl:6 +	p.WriteTitle(qb422016) +//line templates/login.qtpl:6 +	qs422016 := string(qb422016.B) +//line templates/login.qtpl:6 +	qt422016.ReleaseByteBuffer(qb422016) +//line templates/login.qtpl:6 +	return qs422016 +//line templates/login.qtpl:6 +} + +//line templates/login.qtpl:8 +func (p *LoginPage) StreamNavbar(qw422016 *qt422016.Writer) { +//line templates/login.qtpl:8 +	StreamNavbar(qw422016, Login) +//line templates/login.qtpl:8 +} + +//line templates/login.qtpl:8 +func (p *LoginPage) WriteNavbar(qq422016 qtio422016.Writer) { +//line templates/login.qtpl:8 +	qw422016 := qt422016.AcquireWriter(qq422016) +//line templates/login.qtpl:8 +	p.StreamNavbar(qw422016) +//line templates/login.qtpl:8 +	qt422016.ReleaseWriter(qw422016) +//line templates/login.qtpl:8 +} + +//line templates/login.qtpl:8 +func (p *LoginPage) Navbar() string { +//line templates/login.qtpl:8 +	qb422016 := qt422016.AcquireByteBuffer() +//line templates/login.qtpl:8 +	p.WriteNavbar(qb422016) +//line templates/login.qtpl:8 +	qs422016 := string(qb422016.B) +//line templates/login.qtpl:8 +	qt422016.ReleaseByteBuffer(qb422016) +//line templates/login.qtpl:8 +	return qs422016 +//line templates/login.qtpl:8 +} + +//line templates/login.qtpl:10 +func (p *LoginPage) StreamContent(qw422016 *qt422016.Writer) { +//line templates/login.qtpl:10 +	qw422016.N().S(` +<div class="row"> +  <div class="col-md-6 offset-md-3"> +    <form> +      <div class="form-group m-3"> +        <label for="username" class="form-label">Username</label> +        <input type="text" class="form-control" id="username" aria-describedby="emailHelp"> +      </div> +      <div class="form-group m-3"> +        <label for="password" class="form-label">Password</label> +        <input type="password" class="form-control" id="password"> +      </div> +      <div class="form-group m-3"> +        <button type="submit" class="btn btn-primary">Login</button> +      </div> +    </form> +  </div> +</div> +`) +//line templates/login.qtpl:28 +} + +//line templates/login.qtpl:28 +func (p *LoginPage) WriteContent(qq422016 qtio422016.Writer) { +//line templates/login.qtpl:28 +	qw422016 := qt422016.AcquireWriter(qq422016) +//line templates/login.qtpl:28 +	p.StreamContent(qw422016) +//line templates/login.qtpl:28 +	qt422016.ReleaseWriter(qw422016) +//line templates/login.qtpl:28 +} + +//line templates/login.qtpl:28 +func (p *LoginPage) Content() string { +//line templates/login.qtpl:28 +	qb422016 := qt422016.AcquireByteBuffer() +//line templates/login.qtpl:28 +	p.WriteContent(qb422016) +//line templates/login.qtpl:28 +	qs422016 := string(qb422016.B) +//line templates/login.qtpl:28 +	qt422016.ReleaseByteBuffer(qb422016) +//line templates/login.qtpl:28 +	return qs422016 +//line templates/login.qtpl:28 +} + +//line templates/login.qtpl:30 +func (p *LoginPage) StreamScript(qw422016 *qt422016.Writer) { +//line templates/login.qtpl:30 +	qw422016.N().S(` +`) +//line templates/login.qtpl:31 +} + +//line templates/login.qtpl:31 +func (p *LoginPage) WriteScript(qq422016 qtio422016.Writer) { +//line templates/login.qtpl:31 +	qw422016 := qt422016.AcquireWriter(qq422016) +//line templates/login.qtpl:31 +	p.StreamScript(qw422016) +//line templates/login.qtpl:31 +	qt422016.ReleaseWriter(qw422016) +//line templates/login.qtpl:31 +} + +//line templates/login.qtpl:31 +func (p *LoginPage) Script() string { +//line templates/login.qtpl:31 +	qb422016 := qt422016.AcquireByteBuffer() +//line templates/login.qtpl:31 +	p.WriteScript(qb422016) +//line templates/login.qtpl:31 +	qs422016 := string(qb422016.B) +//line templates/login.qtpl:31 +	qt422016.ReleaseByteBuffer(qb422016) +//line templates/login.qtpl:31 +	return qs422016 +//line templates/login.qtpl:31 +} diff --git a/templates/navbar.qtpl b/templates/navbar.qtpl index 8f5f9e1..62de219 100644 --- a/templates/navbar.qtpl +++ b/templates/navbar.qtpl @@ -5,6 +5,7 @@ const (      List      About      Config +    Login  )  %} @@ -16,7 +17,6 @@ const (      Summary      Refs      Tree -    Login  )  %} diff --git a/templates/navbar.qtpl.go b/templates/navbar.qtpl.go index e6ca0aa..ad857f7 100644 --- a/templates/navbar.qtpl.go +++ b/templates/navbar.qtpl.go @@ -25,9 +25,10 @@ const (  	List  	About  	Config +	Login  ) -//line templates/navbar.qtpl:12 +//line templates/navbar.qtpl:13  type GitSelection int  const ( @@ -36,7 +37,6 @@ const (  	Summary  	Refs  	Tree -	Login  )  //line templates/navbar.qtpl:23 @@ -93,7 +93,7 @@ func StreamNavbar(qw422016 *qt422016.Writer, s Selection) {  //line templates/navbar.qtpl:31  	streaminsertIfEqual(qw422016, s, Login)  //line templates/navbar.qtpl:31 -	qw422016.N().S(`" href="/">login</a> +	qw422016.N().S(`" href="/login">login</a>  `)  //line templates/navbar.qtpl:35  	qw422016.N().S(`  | 
