mirror of
https://github.com/1f349/tulip.git
synced 2024-12-23 00:34:07 +00:00
Autofill login name sent from external service
This commit is contained in:
parent
b33454627a
commit
a8afddb02b
@ -18,11 +18,11 @@
|
|||||||
<input type="hidden" name="redirect" value="{{.Redirect}}"/>
|
<input type="hidden" name="redirect" value="{{.Redirect}}"/>
|
||||||
<div>
|
<div>
|
||||||
<label for="field_username">User Name:</label>
|
<label for="field_username">User Name:</label>
|
||||||
<input type="text" name="username" id="field_username" required/>
|
<input type="text" name="username" id="field_username" {{if gt (len .LoginName) 0}} value="{{.LoginName}}" {{else}} autofocus {{end}} required/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label for="field_password">Password:</label>
|
<label for="field_password">Password:</label>
|
||||||
<input type="password" name="password" id="field_password" required/>
|
<input type="password" name="password" id="field_password" {{if gt (len .LoginName) 0}} autofocus {{end}} required/>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit">Login</button>
|
<button type="submit">Login</button>
|
||||||
</form>
|
</form>
|
||||||
|
@ -16,18 +16,37 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// getUserLoginName finds the `login_name` query parameter within the `/authorize` redirect url
|
||||||
|
func getUserLoginName(req *http.Request) string {
|
||||||
|
q := req.URL.Query()
|
||||||
|
if !q.Has("redirect") {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
originUrl, err := url.ParseRequestURI(q.Get("redirect"))
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if originUrl.Path != "/authorize" {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return originUrl.Query().Get("login_name")
|
||||||
|
}
|
||||||
|
|
||||||
func (h *HttpServer) LoginGet(rw http.ResponseWriter, req *http.Request, _ httprouter.Params, auth UserAuth) {
|
func (h *HttpServer) LoginGet(rw http.ResponseWriter, req *http.Request, _ httprouter.Params, auth UserAuth) {
|
||||||
if !auth.IsGuest() {
|
if !auth.IsGuest() {
|
||||||
h.SafeRedirect(rw, req)
|
h.SafeRedirect(rw, req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loginName := getUserLoginName(req)
|
||||||
|
|
||||||
rw.Header().Set("Content-Type", "text/html")
|
rw.Header().Set("Content-Type", "text/html")
|
||||||
rw.WriteHeader(http.StatusOK)
|
rw.WriteHeader(http.StatusOK)
|
||||||
pages.RenderPageTemplate(rw, "login", map[string]any{
|
pages.RenderPageTemplate(rw, "login", map[string]any{
|
||||||
"ServiceName": h.serviceName,
|
"ServiceName": h.serviceName,
|
||||||
"Redirect": req.URL.Query().Get("redirect"),
|
"Redirect": req.URL.Query().Get("redirect"),
|
||||||
"Mismatch": req.URL.Query().Get("mismatch"),
|
"Mismatch": req.URL.Query().Get("mismatch"),
|
||||||
|
"LoginName": loginName,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ func NewHttpServer(listen, domain, otpIssuer, serviceName string, mailer mail.Ma
|
|||||||
if !scope2.ScopesExist(a) {
|
if !scope2.ScopesExist(a) {
|
||||||
return "", errInvalidScope
|
return "", errInvalidScope
|
||||||
}
|
}
|
||||||
return "openid", nil
|
return a, nil
|
||||||
})
|
})
|
||||||
|
|
||||||
r.GET("/.well-known/openid-configuration", func(rw http.ResponseWriter, req *http.Request, params httprouter.Params) {
|
r.GET("/.well-known/openid-configuration", func(rw http.ResponseWriter, req *http.Request, params httprouter.Params) {
|
||||||
|
Loading…
Reference in New Issue
Block a user