feat: assign users to teams via OIDC claims #1393
|
@ -18,7 +18,6 @@ package models
|
|||
|
||||
import (
|
||||
"code.vikunja.io/api/pkg/events"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
user2 "code.vikunja.io/api/pkg/user"
|
||||
"code.vikunja.io/web"
|
||||
"xorm.io/xorm"
|
||||
|
@ -55,7 +54,7 @@ func (tm *TeamMember) Create(s *xorm.Session, a web.Auth) (err error) {
|
|||
|
||||
// Check if that user is already part of the team
|
||||
exists, err := s.
|
||||
Where("team_id = ? AND user_name = ?", tm.TeamID, tm.UserID).
|
||||
Where("team_id = ? AND user_id = ?", tm.TeamID, tm.UserID).
|
||||
Get(&TeamMember{})
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -110,23 +109,19 @@ func (tm *TeamMember) Delete(s *xorm.Session, _ web.Auth) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (tm *TeamMember) CheckMembership(s *xorm.Session) (err error) {
|
||||
func (tm *TeamMember) CheckMembership(s *xorm.Session) (exists bool, err error) {
|
||||
member, err := user2.GetUserByUsername(s, tm.Username)
|
||||
viehlieb marked this conversation as resolved
Outdated
|
||||
if err != nil {
|
||||
viehlieb marked this conversation as resolved
Outdated
konrad
commented
This should be This should be `Exist(&TeamMember{})`.
viehlieb
commented
done done
|
||||
return
|
||||
}
|
||||
tm.UserID = member.ID
|
||||
exists, err := s.
|
||||
exists, err = s.
|
||||
Where("team_id = ? AND user_id = ?", tm.TeamID, tm.UserID).
|
||||
Get(&TeamMember{})
|
||||
viehlieb marked this conversation as resolved
Outdated
konrad
commented
Couldn't you just return the result here directly? Couldn't you just return the result here directly?
viehlieb
commented
In fact this function is not needed anymore for this feature, so I'll just remove it. In fact this function is not needed anymore for this feature, so I'll just remove it.
It was used for finding out whether a user should be signed out from team or deleted.
|
||||
if err != nil {
|
||||
if exists {
|
||||
return
|
||||
}
|
||||
viehlieb marked this conversation as resolved
Outdated
konrad
commented
If it's only counting, please use If it's only counting, please use `Count()`.
viehlieb
commented
done done
|
||||
if exists {
|
||||
log.Errorf("Team member already exists %v", ErrUserIsMemberOfTeam{tm.UserID, tm.UserID})
|
||||
return ErrUserIsMemberOfTeam{tm.UserID, tm.UserID}
|
||||
}
|
||||
return
|
||||
return exists, ErrUserIsMemberOfTeam{tm.UserID, tm.UserID}
|
||||
}
|
||||
|
||||
// Update toggles a team member's admin status
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
"time"
|
||||
|
||||
"code.vikunja.io/api/pkg/db"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
|
||||
"code.vikunja.io/api/pkg/events"
|
||||
"code.vikunja.io/api/pkg/user"
|
||||
|
@ -38,6 +39,8 @@ type Team struct {
|
|||
// The team's description.
|
||||
Description string `xorm:"longtext null" json:"description"`
|
||||
CreatedByID int64 `xorm:"bigint not null INDEX" json:"-"`
|
||||
// The team's oidc id delivered by the oidc provider
|
||||
OidcID string `xorm:"varchar(250) null" maxLength:"250" json:"oidc_id"`
|
||||
|
||||
// The user who created this team.
|
||||
CreatedBy *user.User `xorm:"-" json:"created_by"`
|
||||
|
|
Loading…
Reference in New Issue
Block a user
Can you do this either with a join to avoid loading the user or at least use the "simple" function?
done.