mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
2978 files. The fork is 2026-07-15 (rebrand: gitea.dev -> github.com/hanzoai/git), so 2026 is the year, and "Copyright 2026 Hanzo AI, Inc." was already the form used by the handful of files that had ours. Shape is now: // Copyright 2026 Hanzo AI, Inc. All rights reserved. // Copyright 2015 The Gogs Authors. All rights reserved. // Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT Ours on top, theirs retained verbatim. Retained because MIT requires it, and separately because they are true — those authors did write that code. Not renamed to "The Git Authors": Git is a different project under a different license, and putting its name here would attribute this code to people who have nothing to do with it. Adding our line is the fix; overwriting theirs would have been both a licence violation and a false statement. gofmt still reports import-order drift in some of these files. It predates this change (verified against a stash) and is left alone rather than burying a one-line-per-file legal change under 3000 files of unrelated reordering. Build clean. Co-authored-by: Hanzo Dev <[email protected]>
79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package oauth2
|
|
|
|
// CustomURLMapping describes the urls values to use when customizing OAuth2 provider URLs
|
|
type CustomURLMapping struct {
|
|
AuthURL string `json:",omitempty"`
|
|
TokenURL string `json:",omitempty"`
|
|
ProfileURL string `json:",omitempty"`
|
|
EmailURL string `json:",omitempty"`
|
|
Tenant string `json:",omitempty"`
|
|
}
|
|
|
|
// CustomURLSettings describes the urls values and availability to use when customizing OAuth2 provider URLs
|
|
type CustomURLSettings struct {
|
|
AuthURL Attribute
|
|
TokenURL Attribute
|
|
ProfileURL Attribute
|
|
EmailURL Attribute
|
|
Tenant Attribute
|
|
}
|
|
|
|
// Attribute describes the availability, and required status for a custom url configuration
|
|
type Attribute struct {
|
|
Value string
|
|
Available bool
|
|
Required bool
|
|
}
|
|
|
|
func availableAttribute(value string) Attribute {
|
|
return Attribute{Value: value, Available: true}
|
|
}
|
|
|
|
func requiredAttribute(value string) Attribute {
|
|
return Attribute{Value: value, Available: true, Required: true}
|
|
}
|
|
|
|
// Required is true if any attribute is required
|
|
func (c *CustomURLSettings) Required() bool {
|
|
if c == nil {
|
|
return false
|
|
}
|
|
if c.AuthURL.Required || c.EmailURL.Required || c.ProfileURL.Required || c.TokenURL.Required || c.Tenant.Required {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// OverrideWith copies the current customURLMapping and overrides it with values from the provided mapping
|
|
func (c *CustomURLSettings) OverrideWith(override *CustomURLMapping) *CustomURLMapping {
|
|
custom := &CustomURLMapping{
|
|
AuthURL: c.AuthURL.Value,
|
|
TokenURL: c.TokenURL.Value,
|
|
ProfileURL: c.ProfileURL.Value,
|
|
EmailURL: c.EmailURL.Value,
|
|
Tenant: c.Tenant.Value,
|
|
}
|
|
if override != nil {
|
|
if len(override.AuthURL) > 0 && c.AuthURL.Available {
|
|
custom.AuthURL = override.AuthURL
|
|
}
|
|
if len(override.TokenURL) > 0 && c.TokenURL.Available {
|
|
custom.TokenURL = override.TokenURL
|
|
}
|
|
if len(override.ProfileURL) > 0 && c.ProfileURL.Available {
|
|
custom.ProfileURL = override.ProfileURL
|
|
}
|
|
if len(override.EmailURL) > 0 && c.EmailURL.Available {
|
|
custom.EmailURL = override.EmailURL
|
|
}
|
|
if len(override.Tenant) > 0 && c.Tenant.Available {
|
|
custom.Tenant = override.Tenant
|
|
}
|
|
}
|
|
return custom
|
|
}
|