mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-04-26 06:04:46 +00:00
Usage in FederatatedUser
This commit is contained in:
parent
54ec6daa2d
commit
91e19646d0
3 changed files with 43 additions and 12 deletions
|
@ -4,21 +4,28 @@
|
||||||
package user
|
package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/modules/validation"
|
"code.gitea.io/gitea/modules/validation"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FederatedUser struct {
|
type FederatedUser struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
UserID int64 `xorm:"NOT NULL"`
|
UserID int64 `xorm:"NOT NULL"`
|
||||||
ExternalID string `xorm:"UNIQUE(federation_user_mapping) NOT NULL"`
|
ExternalID string `xorm:"UNIQUE(federation_user_mapping) NOT NULL"`
|
||||||
FederationHostID int64 `xorm:"UNIQUE(federation_user_mapping) NOT NULL"`
|
FederationHostID int64 `xorm:"UNIQUE(federation_user_mapping) NOT NULL"`
|
||||||
|
InboxURL *string
|
||||||
|
ActorURL *string
|
||||||
|
NormalizedFederatedURI string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFederatedUser(userID int64, externalID string, federationHostID int64) (FederatedUser, error) {
|
func NewFederatedUser(userID int64, externalID string, federationHostID int64, normalizedFederatedURI string) (FederatedUser, error) {
|
||||||
result := FederatedUser{
|
result := FederatedUser{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
ExternalID: externalID,
|
ExternalID: externalID,
|
||||||
FederationHostID: federationHostID,
|
FederationHostID: federationHostID,
|
||||||
|
NormalizedFederatedURI: normalizedFederatedURI,
|
||||||
}
|
}
|
||||||
if valid, err := validation.IsValid(result); !valid {
|
if valid, err := validation.IsValid(result); !valid {
|
||||||
return FederatedUser{}, err
|
return FederatedUser{}, err
|
||||||
|
@ -33,3 +40,27 @@ func (user FederatedUser) Validate() []string {
|
||||||
result = append(result, validation.ValidateNotEmpty(user.FederationHostID, "FederationHostID")...)
|
result = append(result, validation.ValidateNotEmpty(user.FederationHostID, "FederationHostID")...)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (user *FederatedUser) SetInboxURL(ctx context.Context, url *string) error {
|
||||||
|
user.InboxURL = url
|
||||||
|
_, err := db.GetEngine(ctx).ID(user.ID).Cols("inbox_url").Update(user)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetFederatedUserByID(ctx context.Context, id int64) (*FederatedUser, error) {
|
||||||
|
var user FederatedUser
|
||||||
|
_, err := db.GetEngine(ctx).Where("id = ?", id).Get(&user)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &user, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUserByActorURL(ctx context.Context, actorURL string) (*User, error) {
|
||||||
|
var user User
|
||||||
|
_, err := db.GetEngine(ctx).Table("`user`").Join("INNER", "`federated_user`", "`user`.id = `federated_user`.user_id").Where("`federated_user`.actor_url = ?", actorURL).Get(&user)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &user, nil
|
||||||
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ type User struct {
|
||||||
UseCustomAvatar bool
|
UseCustomAvatar bool
|
||||||
|
|
||||||
// For federation
|
// For federation
|
||||||
NormalizedFederatedURI string
|
//NormalizedFederatedURI string
|
||||||
|
|
||||||
// Counters
|
// Counters
|
||||||
NumFollowers int
|
NumFollowers int
|
||||||
|
|
|
@ -207,11 +207,11 @@ func CreateUserFromAP(ctx context.Context, personID fm.PersonID, federationHostI
|
||||||
LoginName: loginName,
|
LoginName: loginName,
|
||||||
Type: user.UserTypeRemoteUser,
|
Type: user.UserTypeRemoteUser,
|
||||||
IsAdmin: false,
|
IsAdmin: false,
|
||||||
NormalizedFederatedURI: personID.AsURI(),
|
|
||||||
}
|
}
|
||||||
federatedUser := user.FederatedUser{
|
federatedUser := user.FederatedUser{
|
||||||
ExternalID: personID.ID,
|
ExternalID: personID.ID,
|
||||||
FederationHostID: federationHostID,
|
FederationHostID: federationHostID,
|
||||||
|
NormalizedFederatedURI: personID.AsURI(),
|
||||||
}
|
}
|
||||||
err = user.CreateFederatedUser(ctx, &newUser, &federatedUser)
|
err = user.CreateFederatedUser(ctx, &newUser, &federatedUser)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue