Files
kubesphere/vendor/openpitrix.io/openpitrix/pkg/sender/sender.go
hongming 1b5681c12b refactor: openpitrix module
Signed-off-by: hongming <talonwan@yunify.com>
2019-09-26 13:41:00 +08:00

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)
}