diff --git a/net/server/internal/api_authorize.go b/net/server/internal/api_authorize.go index 7d0c0741..511eaf57 100644 --- a/net/server/internal/api_authorize.go +++ b/net/server/internal/api_authorize.go @@ -7,7 +7,7 @@ import ( //Authorize confirm account authorization with signed data message func Authorize(w http.ResponseWriter, r *http.Request) { - account, code, res := BearerAppToken(r, true) + account, code, res := ParamAgentToken(r, true) if res != nil { ErrResponse(w, code, res) return diff --git a/net/server/internal/api_clearCardGroup.go b/net/server/internal/api_clearCardGroup.go index 4d11ec20..74208468 100644 --- a/net/server/internal/api_clearCardGroup.go +++ b/net/server/internal/api_clearCardGroup.go @@ -11,7 +11,7 @@ import ( //ClearCardGroup removes card from sharing group func ClearCardGroup(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return diff --git a/net/server/internal/api_clearCardNotes.go b/net/server/internal/api_clearCardNotes.go index 88b89ebb..93c46f27 100644 --- a/net/server/internal/api_clearCardNotes.go +++ b/net/server/internal/api_clearCardNotes.go @@ -11,7 +11,7 @@ import ( //ClearCardNotes clear notes assigned to card func ClearCardNotes(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return diff --git a/net/server/internal/api_clearChannelGroup.go b/net/server/internal/api_clearChannelGroup.go index 3baf26bf..0479eefc 100644 --- a/net/server/internal/api_clearChannelGroup.go +++ b/net/server/internal/api_clearChannelGroup.go @@ -11,7 +11,7 @@ import ( //ClearChannelGroup removes sharing group from channel func ClearChannelGroup(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return @@ -24,7 +24,7 @@ func ClearChannelGroup(w http.ResponseWriter, r *http.Request) { // load referenced channel var channelSlot store.ChannelSlot - if err := store.DB.Preload("Channel.Cards.CardSlot").Preload("Channel.Groups.GroupSlot").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&channelSlot).Error; err != nil { + if err := store.DB.Preload("Channel.Members.Card.CardSlot").Preload("Channel.Groups.GroupSlot").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&channelSlot).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrResponse(w, http.StatusInternalServerError, err) } else { diff --git a/net/server/internal/api_removeChannel.go b/net/server/internal/api_removeChannel.go index 1ba4a081..ddce1d8a 100644 --- a/net/server/internal/api_removeChannel.go +++ b/net/server/internal/api_removeChannel.go @@ -73,9 +73,9 @@ func RemoveChannel(w http.ResponseWriter, r *http.Request) { return res } slot.Channel.Groups = []store.Group{} - if res := tx.Model(&slot.Channel).Association("Cards").Clear(); res != nil { - return res - } + if res := tx.Where("channel_id = ?", slot.Channel.ID).Delete(&store.Member{}).Error; res != nil { + return res + } slot.Channel.Members = []store.Member{} if res := tx.Where("channel_id = ?", slot.Channel.ID).Delete(&store.Tag{}).Error; res != nil { return res diff --git a/net/server/internal/api_setCardGroup.go b/net/server/internal/api_setCardGroup.go index e7c6324c..51428482 100644 --- a/net/server/internal/api_setCardGroup.go +++ b/net/server/internal/api_setCardGroup.go @@ -10,7 +10,7 @@ import ( //SetCardGroup assigns contact to sharing group func SetCardGroup(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return diff --git a/net/server/internal/api_setCardNotes.go b/net/server/internal/api_setCardNotes.go index 1df903aa..26a77be2 100644 --- a/net/server/internal/api_setCardNotes.go +++ b/net/server/internal/api_setCardNotes.go @@ -11,7 +11,7 @@ import ( //SetCardNotes assignes notes to contact in account func SetCardNotes(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return diff --git a/net/server/internal/api_setChannelGroup.go b/net/server/internal/api_setChannelGroup.go index 3629b198..086f8a70 100644 --- a/net/server/internal/api_setChannelGroup.go +++ b/net/server/internal/api_setChannelGroup.go @@ -11,7 +11,7 @@ import ( //SetChannelGroup adds sharing group to channel func SetChannelGroup(w http.ResponseWriter, r *http.Request) { - account, code, err := BearerAppToken(r, false) + account, code, err := ParamAgentToken(r, false) if err != nil { ErrResponse(w, code, err) return @@ -24,7 +24,7 @@ func SetChannelGroup(w http.ResponseWriter, r *http.Request) { // load referenced channel var channelSlot store.ChannelSlot - if err := store.DB.Preload("Channel.Cards.CardSlot").Preload("Channel.Groups.GroupSlot").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&channelSlot).Error; err != nil { + if err := store.DB.Preload("Channel.Members.Card.CardSlot").Preload("Channel.Groups.GroupSlot").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&channelSlot).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrResponse(w, http.StatusInternalServerError, err) } else { diff --git a/net/server/internal/api_setChannelSubject.go b/net/server/internal/api_setChannelSubject.go index 0be79677..47a4a21e 100644 --- a/net/server/internal/api_setChannelSubject.go +++ b/net/server/internal/api_setChannelSubject.go @@ -29,7 +29,7 @@ func SetChannelSubject(w http.ResponseWriter, r *http.Request) { // load referenced channel var slot store.ChannelSlot - if err := store.DB.Preload("Channel.Cards").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&slot).Error; err != nil { + if err := store.DB.Preload("Channel.Members.Card").Preload("Channel.Groups.Cards").Where("account_id = ? AND channel_slot_id = ?", account.ID, channelID).First(&slot).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrResponse(w, http.StatusInternalServerError, err) } else { diff --git a/net/server/internal/authUtil.go b/net/server/internal/authUtil.go index 850c8ce5..281fb3f3 100644 --- a/net/server/internal/authUtil.go +++ b/net/server/internal/authUtil.go @@ -95,7 +95,7 @@ func ParamAdminToken(r *http.Request) (int, error) { return http.StatusOK, nil } -//ParamAgentToken retrieves account specified by agent query param +//GetSession retrieves account specified by agent query param func GetSession(r *http.Request) (*store.Session, int, error) { // parse authentication token diff --git a/net/server/internal/testUtil.go b/net/server/internal/testUtil.go index 69c67c42..6a6d09c0 100644 --- a/net/server/internal/testUtil.go +++ b/net/server/internal/testUtil.go @@ -513,13 +513,12 @@ func groupTestCard(account string, cardID string) (groupID string, err error) { groupID = group.ID // set contact group - if r, w, err = NewRequest("PUT", "/contact/cards/{cardID}/groups/{groupID}", nil); err != nil { + if r, w, err = NewRequest("PUT", "/contact/cards/{cardID}/groups/{groupID}?agent="+account, nil); err != nil { return } vars["groupID"] = group.ID vars["cardID"] = cardID r = mux.SetURLVars(r, vars) - SetBearerAuth(r, account) SetCardGroup(w, r) if err = ReadResponse(w, &cardData); err != nil { return @@ -653,10 +652,9 @@ func addTestAccount(username string) (guid string, token string, err error) { token = access.AppToken // authorize claim - if r, w, err = NewRequest("PUT", "/authorize", "1234abcd"); err != nil { + if r, w, err = NewRequest("PUT", "/authorize?agent="+token, "1234abcd"); err != nil { return } - SetBearerAuth(r, token) Authorize(w, r) if err = ReadResponse(w, &msg); err != nil { return diff --git a/net/server/internal/transcodeUtil.go b/net/server/internal/transcodeUtil.go index e5f176be..779b5fd1 100644 --- a/net/server/internal/transcodeUtil.go +++ b/net/server/internal/transcodeUtil.go @@ -30,7 +30,7 @@ func transcodeVideo() { defer videoSync.Unlock() for { var asset store.Asset - if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Cards").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueueVideo, APPAssetWaiting).First(&asset).Error; err != nil { + if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Members.Card").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueueVideo, APPAssetWaiting).First(&asset).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrMsg(err) } @@ -45,7 +45,7 @@ func transcodeAudio() { defer audioSync.Unlock() for { var asset store.Asset - if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Cards").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueueAudio, APPAssetWaiting).First(&asset).Error; err != nil { + if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Members.Card").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueueAudio, APPAssetWaiting).First(&asset).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrMsg(err) } @@ -60,7 +60,7 @@ func transcodePhoto() { defer photoSync.Unlock() for { var asset store.Asset - if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Cards").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueuePhoto, APPAssetWaiting).First(&asset).Error; err != nil { + if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Members.Card").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue = ? AND status = ?", APPQueuePhoto, APPAssetWaiting).First(&asset).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrMsg(err) } @@ -75,7 +75,7 @@ func transcodeDefault() { defer defaultSync.Unlock() for { var asset store.Asset - if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Cards").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue != ? AND transform_queue != ? AND transform_queue != ? AND status = ?", APPQueueVideo, APPQueueAudio, APPQueuePhoto, APPAssetWaiting).First(&asset).Error; err != nil { + if err := store.DB.Order("created asc").Preload("Account").Preload("Channel.Members.Card").Preload("Channel.Groups.Cards").Preload("Channel.ChannelSlot").Preload("Topic.TopicSlot").Where("transform_queue != ? AND transform_queue != ? AND transform_queue != ? AND status = ?", APPQueueVideo, APPQueueAudio, APPQueuePhoto, APPAssetWaiting).First(&asset).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrMsg(err) } @@ -147,7 +147,7 @@ func updateAsset(asset *store.Asset, status string, crc uint32, size int64) (err if asset.Topic == nil { return errors.New("asset not found") } - if res := tx.Preload("Account").Preload("TopicSlot").Preload("Channel.Groups").Preload("Channel.Cards").Preload("Channel.ChannelSlot").First(&topic, asset.Topic.ID).Error; res != nil { + if res := tx.Preload("Account").Preload("TopicSlot").Preload("Channel.Groups").Preload("Channel.Members.Card").Preload("Channel.ChannelSlot").First(&topic, asset.Topic.ID).Error; res != nil { return res } if res := tx.Model(&topic).Update("detail_revision", topic.Account.ChannelRevision+1).Error; res != nil {