chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package plugin
|
||||
|
||||
type UserCenter interface {
|
||||
Base
|
||||
// Description returns the description of the user center, including the name, icon, url, etc.
|
||||
Description() UserCenterDesc
|
||||
// ControlCenterItems returns the items that will be displayed in the control center
|
||||
ControlCenterItems() []ControlCenter
|
||||
// LoginCallback is called when the user center login callback is called
|
||||
LoginCallback(ctx *GinContext) (userInfo *UserCenterBasicUserInfo, err error)
|
||||
// SignUpCallback is called when the user center sign up callback is called
|
||||
SignUpCallback(ctx *GinContext) (userInfo *UserCenterBasicUserInfo, err error)
|
||||
// UserInfo returns the user information
|
||||
UserInfo(externalID string) (userInfo *UserCenterBasicUserInfo, err error)
|
||||
// UserStatus returns the latest user status
|
||||
UserStatus(externalID string) (userStatus UserStatus)
|
||||
// UserList returns the user list information
|
||||
UserList(externalIDs []string) (userInfo []*UserCenterBasicUserInfo, err error)
|
||||
// UserSettings returns the user settings
|
||||
UserSettings(externalID string) (userSettings *SettingInfo, err error)
|
||||
// PersonalBranding returns the personal branding information
|
||||
PersonalBranding(externalID string) (branding []*PersonalBranding)
|
||||
// AfterLogin is called after the user logs in
|
||||
AfterLogin(externalID, accessToken string)
|
||||
}
|
||||
|
||||
type UserCenterDesc struct {
|
||||
Name string `json:"name"`
|
||||
DisplayName Translator `json:"display_name"`
|
||||
Icon string `json:"icon"`
|
||||
Url string `json:"url"`
|
||||
LoginRedirectURL string `json:"login_redirect_url"`
|
||||
SignUpRedirectURL string `json:"sign_up_redirect_url"`
|
||||
RankAgentEnabled bool `json:"rank_agent_enabled"`
|
||||
UserStatusAgentEnabled bool `json:"user_status_agent_enabled"`
|
||||
UserRoleAgentEnabled bool `json:"user_role_agent_enabled"`
|
||||
MustAuthEmailEnabled bool `json:"must_auth_email_enabled"`
|
||||
EnabledOriginalUserSystem bool `json:"enabled_original_user_system"`
|
||||
}
|
||||
|
||||
type UserStatus int
|
||||
|
||||
const (
|
||||
UserStatusAvailable UserStatus = 1
|
||||
UserStatusSuspended UserStatus = 9
|
||||
UserStatusDeleted UserStatus = 10
|
||||
)
|
||||
|
||||
type UserCenterBasicUserInfo struct {
|
||||
ExternalID string `json:"external_id"`
|
||||
Username string `json:"username"`
|
||||
DisplayName string `json:"display_name"`
|
||||
Email string `json:"email"`
|
||||
Rank int `json:"rank"`
|
||||
Avatar string `json:"avatar"`
|
||||
Mobile string `json:"mobile"`
|
||||
Bio string `json:"bio"`
|
||||
Status UserStatus `json:"status"`
|
||||
}
|
||||
|
||||
type ControlCenter struct {
|
||||
Name string `json:"name"`
|
||||
Label string `json:"label"`
|
||||
Url string `json:"url"`
|
||||
}
|
||||
|
||||
type SettingInfo struct {
|
||||
ProfileSettingRedirectURL string `json:"profile_setting_redirect_url"`
|
||||
AccountSettingRedirectURL string `json:"account_setting_redirect_url"`
|
||||
}
|
||||
|
||||
type PersonalBranding struct {
|
||||
Icon string `json:"icon"`
|
||||
Name string `json:"name"`
|
||||
Label string `json:"label"`
|
||||
Url string `json:"url"`
|
||||
}
|
||||
|
||||
var (
|
||||
// CallUserCenter is a function that calls all registered parsers
|
||||
CallUserCenter,
|
||||
registerUserCenter = MakePlugin[UserCenter](false)
|
||||
)
|
||||
|
||||
func UserCenterEnabled() (enabled bool) {
|
||||
_ = CallUserCenter(func(fn UserCenter) error {
|
||||
enabled = true
|
||||
return nil
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func RankAgentEnabled() (enabled bool) {
|
||||
_ = CallUserCenter(func(fn UserCenter) error {
|
||||
enabled = fn.Description().RankAgentEnabled
|
||||
return nil
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func GetUserCenter() (uc UserCenter, ok bool) {
|
||||
_ = CallUserCenter(func(fn UserCenter) error {
|
||||
uc = fn
|
||||
ok = true
|
||||
return nil
|
||||
})
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user