Skip to content

Commit

Permalink
support oauth and oidc authentication (h44z#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
gandalfmagic committed Jan 5, 2022
1 parent 5d4d06d commit e6cb013
Show file tree
Hide file tree
Showing 23 changed files with 1,593 additions and 31 deletions.
1 change: 1 addition & 0 deletions assets/css/bootstrap-social.min.css

Large diffs are not rendered by default.

41 changes: 40 additions & 1 deletion assets/css/signin.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,43 @@
.navbar-brand > img {
height: 2rem;
width: auto;
}
}

.login-container {
-ms-flex-direction: column !important;
flex-direction: column !important
}

@media (min-width: 576px) {
.login-container {
-ms-flex-direction: row !important;
flex-direction: row !important
}
}

.btn-social.btn-sm>:first-child {
width: 32px;
line-height: 34px;
font-size: 1.6em;
}

.btn-openid {
background: #f2f2f2;
color: #000;
}
.btn-openid:hover {
background: #e7e7e7;
color: #000;
}

.logo-keycloak {
background: url('/img/keycloak-logo.svg') no-repeat 6px 8px;
background-size: 18px 18px;
color: #000;
}

.logo-openid {
background: url('/img/openid-logo.svg') no-repeat 6px 8px;
background-size: 16px 16px;
color: #000;
}
1 change: 1 addition & 0 deletions assets/img/keycloak-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions assets/img/openid-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
85 changes: 63 additions & 22 deletions assets/tpl/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<title>{{ .static.WebsiteTitle }} - Login</title>
<meta name="description" content="{{ .static.WebsiteTitle }}">
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/bootstrap-social.min.css">
<link rel="stylesheet" href="/fonts/fontawesome-all.min.css">
<link rel="stylesheet" href="/fonts/font-awesome.min.css">
<link rel="stylesheet" href="/fonts/fontawesome5-overrides.min.css">
Expand All @@ -24,34 +25,74 @@
</div><!--/.navbar-collapse -->
</nav>
<div class="container mt-1">
<div class="card mt-5">
<div class="card-header">Please sign in</div>
<div class="card-body">
<form class="form-signin" method="post" name="login">
<input type="hidden" name="_csrf" value="{{.Csrf}}">
<div class="form-group">
<label for="inputUsername">Username</label>
<input type="text" name="username" class="form-control" id="inputUsername" aria-describedby="usernameHelp" placeholder="Enter username or email">
{{ if eq .error true }}
<div class="alert alert-danger mt-3" role="alert">
{{.message}}
</div>
{{end}}
<div class="mt-1 d-flex login-container">
<div class="card p-2 mt-3 flex-grow-1">
<div class="card-header">Please sign in</div>
<div class="card-body">
<form class="form-signin" method="post" name="login">
<input type="hidden" name="_csrf" value="{{.Csrf}}">
<div class="form-group">
<label for="inputUsername">Username</label>
<input type="text" name="username" class="form-control" id="inputUsername" aria-describedby="usernameHelp" placeholder="Enter username or email">
</div>
<div class="form-group">
<label for="inputPassword">Password</label>
<input type="password" name="password" class="form-control" id="inputPassword" placeholder="Password">
</div>
<button class="btn btn-lg btn-primary btn-block mt-5" type="submit">Sign in</button>
</form>
</div>
</div>
{{ if eq .socialEnabled true }}
<div class="p-1"></div>
<div class="card p-2 mt-3">
<div class="card-header">Social login</div>
<div class="card-body">
{{ if eq .oauthGithubEnabled true }}
<div class="mt-3">
<form action="/oauth/github/login" method="post">
<input type="hidden" name="_csrf" value="{{.Csrf}}">
<button class="btn btn-block btn-social btn-sm btn-github" type="submit"><span class="fab fa-github"></span> Sign in with GitHub</button>
</form>
</div>
<div class="form-group">
<label for="inputPassword">Password</label>
<input type="password" name="password" class="form-control" id="inputPassword" placeholder="Password">
{{end}}
{{ if eq .oauthGoogleEnabled true }}
<div class="mt-3">
<form action="/oauth/google/login" method="post">
<input type="hidden" name="_csrf" value="{{.Csrf}}">
<button class="btn btn-block btn-social btn-sm btn-google" type="submit"><span class="fa fa-google"></span> Sign in with Google</button>
</form>
</div>
<button class="btn btn-lg btn-primary btn-block mt-5" type="submit">Sign in</button>

{{ if eq .error true }}
<div class="alert alert-danger mt-3" role="alert">
{{.message}}
</div>
{{end}}
</form>

<div class="card o-hidden border-0 my-5">
<div class="card-body p-0">
<a href="/" class="btn btn-white btn-block text-primary btn-user">Go Home</a>
{{ if eq .oauthGitlabEnabled true }}
<div class="mt-3">
<form action="/oauth/gitlab/login" method="post">
<input type="hidden" name="_csrf" value="{{.Csrf}}">
<button class="btn btn-block btn-social btn-sm btn-gitlab" type="submit"><span class="fa fa-gitlab"></span> Sign in with Gitlab</button>
</form>
</div>
{{end}}
{{ range $oidc := .oidc }}
<div class="mt-3">
<form action="/oidc{{$oidc.LoginURL}}" method="post">
<input type="hidden" name="_csrf" value="{{$.Csrf}}">
<button class="btn btn-block btn-social btn-sm btn-openid" type="submit"><span class="fa {{$oidc.Style}}"></span> {{$oidc.Label}}</button>
</form>
</div>
{{end}}
</div>
</div>
{{end}}
</div>
<div class="card o-hidden border-0 my-5">
<div class="card-body p-0">
<a href="/" class="btn btn-white btn-block text-primary btn-user">Go Home</a>
</div>
</div>
{{template "prt_flashes.html" .}}
</div>
Expand Down
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ go 1.16

require (
git.prolicht.digital/pub/healthcheck v1.0.1
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
github.com/coreos/go-oidc/v3 v3.1.0
github.com/evanphx/json-patch v0.5.2
github.com/gin-contrib/sessions v0.0.3
github.com/gin-gonic/gin v1.7.4
github.com/go-ldap/ldap/v3 v3.4.1
github.com/go-openapi/swag v0.19.15 // indirect
github.com/go-playground/validator/v10 v10.9.0
github.com/gofrs/uuid v4.2.0+incompatible
github.com/gorilla/sessions v1.2.1 // indirect
github.com/kelseyhightower/envconfig v1.4.0
github.com/mailru/easyjson v0.7.7 // indirect
Expand All @@ -25,6 +26,7 @@ require (
github.com/utrack/gin-csrf v0.0.0-20190424104817-40fb8d2c8fca
github.com/xhit/go-simple-mail/v2 v2.10.0
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
golang.org/x/tools v0.1.5 // indirect
golang.zx2c4.com/wireguard v0.0.20200121 // indirect
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210803171230-4253848d036c
Expand Down
Loading

0 comments on commit e6cb013

Please sign in to comment.