authenticate: hide impersonation form from non-admin users (#979)

Fixes #881
This commit is contained in:
Cuong Manh Le 2020-06-23 22:09:33 +07:00 committed by GitHub
parent fa40ff1f77
commit fb4dfaea44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 47 additions and 14 deletions

View file

@ -458,6 +458,11 @@ func (a *Authenticate) deleteSession(ctx context.Context, sessionID string) erro
return err
}
func (a *Authenticate) isAdmin(user string) bool {
_, ok := a.administrator[user]
return ok
}
// Dashboard renders the /.pomerium/ user dashboard.
func (a *Authenticate) Dashboard(w http.ResponseWriter, r *http.Request) error {
s, err := a.getSessionFromCtx(r.Context())
@ -494,6 +499,7 @@ func (a *Authenticate) Dashboard(w http.ResponseWriter, r *http.Request) error {
"ImpersonateEmail": urlutil.QueryImpersonateEmail,
"ImpersonateGroups": urlutil.QueryImpersonateGroups,
"RedirectURL": r.URL.Query().Get(urlutil.QueryRedirectURI),
"IsAdmin": a.isAdmin(pbUser.Email),
}
if redirectURL, err := url.Parse(r.URL.Query().Get(urlutil.QueryRedirectURI)); err == nil {