groupware: add workaround when using the master/impersonation account: in that case, don't use impersonation but the impersonation account directly

This commit is contained in:
Pascal Bleser
2026-07-01 14:55:43 +02:00
parent 0d8466cb7d
commit e77250b7c4

View File

@@ -104,14 +104,22 @@ func NewMasterAuthHttpJmapClientAuthenticator(masterUser string, masterPassword
var _ HttpJmapClientAuthenticator = &MasterAuthHttpJmapClientAuthenticator{}
func (h *MasterAuthHttpJmapClientAuthenticator) Authenticate(ctx context.Context, username string, _ *log.Logger, req *http.Request) Error {
masterUsername := username + "%" + h.masterUser
req.SetBasicAuth(masterUsername, h.masterPassword)
if username == h.masterUser {
req.SetBasicAuth(username, h.masterPassword)
} else {
masterUsername := username + "%" + h.masterUser
req.SetBasicAuth(masterUsername, h.masterPassword)
}
return nil
}
func (h *MasterAuthHttpJmapClientAuthenticator) AuthenticateWS(ctx context.Context, username string, _ *log.Logger, headers http.Header) Error {
masterUsername := username + "%" + h.masterUser
headers.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(masterUsername+":"+h.masterPassword)))
if username == h.masterUser {
headers.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(username+":"+h.masterPassword)))
} else {
masterUsername := username + "%" + h.masterUser
headers.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(masterUsername+":"+h.masterPassword)))
}
return nil
}