61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
// Copyright 2018 The OpenPitrix Authors. All rights reserved.
|
|
// Use of this source code is governed by a Apache license
|
|
// that can be found in the LICENSE file.
|
|
|
|
package sender
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"encoding/json"
|
|
|
|
"openpitrix.io/openpitrix/pkg/constants"
|
|
)
|
|
|
|
type Sender struct {
|
|
UserId string `json:"user_id,omitempty"`
|
|
OwnerPath OwnerPath `json:"owner_path,omitempty"`
|
|
AccessPath OwnerPath `json:"access_path,omitempty"`
|
|
}
|
|
|
|
func GetSystemSender() *Sender {
|
|
return &Sender{
|
|
UserId: constants.UserSystem,
|
|
OwnerPath: ":" + constants.UserSystem,
|
|
AccessPath: "",
|
|
}
|
|
}
|
|
|
|
func New(userId string, ownerPath, accessPath OwnerPath) *Sender {
|
|
return &Sender{
|
|
UserId: userId,
|
|
OwnerPath: ownerPath,
|
|
AccessPath: accessPath,
|
|
}
|
|
}
|
|
|
|
func (s Sender) GetOwnerPath() OwnerPath {
|
|
if len(s.OwnerPath) > 0 {
|
|
return s.OwnerPath
|
|
}
|
|
// group1.group2.group3:user1
|
|
return OwnerPath(fmt.Sprintf(":%s", s.UserId))
|
|
}
|
|
|
|
func (s Sender) GetAccessPath() OwnerPath {
|
|
// system can access all data
|
|
if s.UserId == constants.UserSystem {
|
|
return OwnerPath("")
|
|
}
|
|
|
|
return s.AccessPath
|
|
}
|
|
|
|
func (s *Sender) ToJson() string {
|
|
b, err := json.Marshal(s)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return string(b)
|
|
}
|