mirror of https://github.com/rocboss/paopao-ce
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.2 KiB
116 lines
2.2 KiB
1 year ago
|
// Copyright 2023 ROC. All rights reserved.
|
||
|
// Use of this source code is governed by a MIT style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package ms
|
||
|
|
||
|
import (
|
||
|
"github.com/rocboss/paopao-ce/pkg/types"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
ActRegisterUser act = iota
|
||
|
ActCreatePublicTweet
|
||
|
ActCreatePublicAttachment
|
||
|
ActCreatePublicPicture
|
||
|
ActCreatePublicVideo
|
||
|
ActCreatePrivateTweet
|
||
|
ActCreatePrivateAttachment
|
||
|
ActCreatePrivatePicture
|
||
|
ActCreatePrivateVideo
|
||
|
ActCreateFriendTweet
|
||
|
ActCreateFriendAttachment
|
||
|
ActCreateFriendPicture
|
||
|
ActCreateFriendVideo
|
||
|
ActCreatePublicComment
|
||
|
ActCreatePublicPicureComment
|
||
|
ActCreateFriendComment
|
||
|
ActCreateFriendPicureComment
|
||
|
ActCreatePrivateComment
|
||
|
ActCreatePrivatePicureComment
|
||
|
ActStickTweet
|
||
|
ActTopTweet
|
||
|
ActLockTweet
|
||
|
ActVisibleTweet
|
||
|
ActDeleteTweet
|
||
|
ActCreateActivationCode
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
act uint8
|
||
|
|
||
|
FriendFilter map[int64]types.Empty
|
||
|
FriendSet map[string]types.Empty
|
||
|
|
||
|
Action struct {
|
||
|
Act act
|
||
|
UserId int64
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func (f FriendFilter) IsFriend(userId int64) bool {
|
||
|
_, yeah := f[userId]
|
||
|
return yeah
|
||
|
}
|
||
|
|
||
|
// IsAllow default true if user is admin
|
||
|
func (a act) IsAllow(user *User, userId int64, isFriend bool, isActivation bool) bool {
|
||
|
if user.IsAdmin {
|
||
|
return true
|
||
|
}
|
||
|
if user.ID == userId && isActivation {
|
||
|
switch a {
|
||
|
case ActCreatePublicTweet,
|
||
|
ActCreatePublicAttachment,
|
||
|
ActCreatePublicPicture,
|
||
|
ActCreatePublicVideo,
|
||
|
ActCreatePrivateTweet,
|
||
|
ActCreatePrivateAttachment,
|
||
|
ActCreatePrivatePicture,
|
||
|
ActCreatePrivateVideo,
|
||
|
ActCreateFriendTweet,
|
||
|
ActCreateFriendAttachment,
|
||
|
ActCreateFriendPicture,
|
||
|
ActCreateFriendVideo,
|
||
|
ActCreatePrivateComment,
|
||
|
ActCreatePrivatePicureComment,
|
||
|
ActStickTweet,
|
||
|
ActLockTweet,
|
||
|
ActVisibleTweet,
|
||
|
ActDeleteTweet:
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if user.ID == userId && !isActivation {
|
||
|
switch a {
|
||
|
case ActCreatePrivateTweet,
|
||
|
ActCreatePrivateComment,
|
||
|
ActStickTweet,
|
||
|
ActLockTweet,
|
||
|
ActDeleteTweet:
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if isFriend && isActivation {
|
||
|
switch a {
|
||
|
case ActCreatePublicComment,
|
||
|
ActCreatePublicPicureComment,
|
||
|
ActCreateFriendComment,
|
||
|
ActCreateFriendPicureComment:
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if !isFriend && isActivation {
|
||
|
switch a {
|
||
|
case ActCreatePublicComment,
|
||
|
ActCreatePublicPicureComment:
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|