diff options
Diffstat (limited to 'models/user.go')
-rw-r--r-- | models/user.go | 110 |
1 files changed, 2 insertions, 108 deletions
diff --git a/models/user.go b/models/user.go index 1dbc025155..7744222809 100644 --- a/models/user.go +++ b/models/user.go @@ -14,22 +14,13 @@ import ( asymkey_model "code.gitea.io/gitea/models/asymkey" "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/models/organization" repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" - - "xorm.io/builder" ) -// GetOrganizationCount returns count of membership of organization of the user. -func GetOrganizationCount(ctx context.Context, u *user_model.User) (int64, error) { - return db.GetEngine(ctx). - Where("uid=?", u.ID). - Count(new(OrgUser)) -} - // DeleteUser deletes models associated to an user. func DeleteUser(ctx context.Context, u *user_model.User) (err error) { e := db.GetEngine(ctx) @@ -86,7 +77,7 @@ func DeleteUser(ctx context.Context, u *user_model.User) (err error) { &user_model.EmailAddress{UID: u.ID}, &user_model.UserOpenID{UID: u.ID}, &Reaction{UserID: u.ID}, - &TeamUser{UID: u.ID}, + &organization.TeamUser{UID: u.ID}, &Collaboration{UserID: u.ID}, &Stopwatch{UserID: u.ID}, &user_model.Setting{UserID: u.ID}, @@ -204,100 +195,3 @@ func DeleteUser(ctx context.Context, u *user_model.User) (err error) { return nil } - -// GetStarredRepos returns the repos starred by a particular user -func GetStarredRepos(userID int64, private bool, listOptions db.ListOptions) ([]*repo_model.Repository, error) { - sess := db.GetEngine(db.DefaultContext).Where("star.uid=?", userID). - Join("LEFT", "star", "`repository`.id=`star`.repo_id") - if !private { - sess = sess.And("is_private=?", false) - } - - if listOptions.Page != 0 { - sess = db.SetSessionPagination(sess, &listOptions) - - repos := make([]*repo_model.Repository, 0, listOptions.PageSize) - return repos, sess.Find(&repos) - } - - repos := make([]*repo_model.Repository, 0, 10) - return repos, sess.Find(&repos) -} - -// GetWatchedRepos returns the repos watched by a particular user -func GetWatchedRepos(userID int64, private bool, listOptions db.ListOptions) ([]*repo_model.Repository, int64, error) { - sess := db.GetEngine(db.DefaultContext).Where("watch.user_id=?", userID). - And("`watch`.mode<>?", repo_model.WatchModeDont). - Join("LEFT", "watch", "`repository`.id=`watch`.repo_id") - if !private { - sess = sess.And("is_private=?", false) - } - - if listOptions.Page != 0 { - sess = db.SetSessionPagination(sess, &listOptions) - - repos := make([]*repo_model.Repository, 0, listOptions.PageSize) - total, err := sess.FindAndCount(&repos) - return repos, total, err - } - - repos := make([]*repo_model.Repository, 0, 10) - total, err := sess.FindAndCount(&repos) - return repos, total, err -} - -// IsUserVisibleToViewer check if viewer is able to see user profile -func IsUserVisibleToViewer(u, viewer *user_model.User) bool { - return isUserVisibleToViewer(db.GetEngine(db.DefaultContext), u, viewer) -} - -func isUserVisibleToViewer(e db.Engine, u, viewer *user_model.User) bool { - if viewer != nil && viewer.IsAdmin { - return true - } - - switch u.Visibility { - case structs.VisibleTypePublic: - return true - case structs.VisibleTypeLimited: - if viewer == nil || viewer.IsRestricted { - return false - } - return true - case structs.VisibleTypePrivate: - if viewer == nil || viewer.IsRestricted { - return false - } - - // If they follow - they see each over - follower := user_model.IsFollowing(u.ID, viewer.ID) - if follower { - return true - } - - // Now we need to check if they in some organization together - count, err := e.Table("team_user"). - Where( - builder.And( - builder.Eq{"uid": viewer.ID}, - builder.Or( - builder.Eq{"org_id": u.ID}, - builder.In("org_id", - builder.Select("org_id"). - From("team_user", "t2"). - Where(builder.Eq{"uid": u.ID}))))). - Count(new(TeamUser)) - if err != nil { - return false - } - - if count < 0 { - // No common organization - return false - } - - // they are in an organization together - return true - } - return false -} |