♻️ Optimize user join channel logic

This commit is contained in:
2025-02-10 17:17:17 +08:00
parent 1975a89bbb
commit 397386be12
4 changed files with 13 additions and 42 deletions

View File

@ -53,9 +53,11 @@ func GetChannelMember(user authm.Account, channelId uint) (models.ChannelMember,
return member, nil
}
func AddChannelMemberWithCheck(user authm.Account, target models.Channel) error {
if err := authkit.EnsureUserPermGranted(gap.Nx, user.ID, target.AccountID, "ChannelAdd", true); err != nil {
return fmt.Errorf("unable to add user into your channel due to access denied: %v", err)
func AddChannelMemberWithCheck(user, op authm.Account, target models.Channel) error {
if user.ID != op.ID {
if err := authkit.EnsureUserPermGranted(gap.Nx, user.ID, op.ID, "ChannelAdd", true); err != nil {
return fmt.Errorf("unable to add user into your channel due to access denied: %v", err)
}
}
member := models.ChannelMember{

View File

@ -184,7 +184,7 @@ func ListChannel(user *authm.Account, realmId ...uint) ([]models.Channel, error)
var idRange []uint
if user != nil {
if err := database.C.Where("account_id = ?", user.ID).Find(&identities).Error; err != nil {
return nil, fmt.Errorf("unabkle to get identities: %v", err)
return nil, fmt.Errorf("unable to get identities: %v", err)
}
for _, identity := range identities {
idRange = append(idRange, identity.ChannelID)