本文整理汇总了Golang中common.User.HasWriteAccess方法的典型用法代码示例。如果您正苦于以下问题:Golang User.HasWriteAccess方法的具体用法?Golang User.HasWriteAccess怎么用?Golang User.HasWriteAccess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类common.User
的用法示例。
在下文中一共展示了User.HasWriteAccess方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series []*protocol.Series) error {
// make sure that the db exist
if !self.clusterConfiguration.DatabasesExists(db) {
return fmt.Errorf("Database %s doesn't exist", db)
}
for _, s := range series {
seriesName := s.GetName()
if user.HasWriteAccess(seriesName) {
continue
}
return common.NewAuthorizationError("User %s doesn't have write permissions for %s", user.GetName(), seriesName)
}
err := self.CommitSeriesData(db, series, false)
if err != nil {
return err
}
for _, s := range series {
self.ProcessContinuousQueries(db, s)
}
return err
}
示例2: AuthorizeDropSeries
func (self *Permissions) AuthorizeDropSeries(user common.User, db string, seriesName string) (ok bool, err common.AuthorizationError) {
if !user.IsDbAdmin(db) && !user.HasWriteAccess(seriesName) {
return false, common.NewAuthorizationError("Insufficient permissions to drop series")
}
return true, ""
}
示例3: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series *protocol.Series) error {
if !user.HasWriteAccess(db) {
return common.NewAuthorizationError("Insufficient permission to write to %s", db)
}
if len(series.Points) == 0 {
return fmt.Errorf("Can't write series with zero points.")
}
err := self.CommitSeriesData(db, series)
self.ProcessContinuousQueries(db, series)
return err
}
示例4: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series []*protocol.Series) error {
if !user.HasWriteAccess(db) {
return common.NewAuthorizationError("Insufficient permissions to write to %s", db)
}
err := self.CommitSeriesData(db, series, false)
if err != nil {
return err
}
for _, s := range series {
self.ProcessContinuousQueries(db, s)
}
return err
}
示例5: DropSeries
func (self *CoordinatorImpl) DropSeries(user common.User, db, series string) error {
if !user.IsClusterAdmin() && !user.IsDbAdmin(db) && !user.HasWriteAccess(series) {
return common.NewAuthorizationError("Insufficient permission to drop series")
}
if self.clusterConfiguration.IsSingleServer() {
return self.datastore.DropSeries(db, series)
}
servers, _ := self.clusterConfiguration.GetServersToMakeQueryTo(&db)
for _, server := range servers {
if err := self.handleDropSeries(server.server, db, series); err != nil {
return err
}
}
return nil
}
示例6: DeleteRangeOfRegex
func (self *LevelDbDatastore) DeleteRangeOfRegex(user common.User, database string, regex *regexp.Regexp, startTime, endTime time.Time) error {
series := self.getSeriesForDbAndRegex(database, regex)
hasAccess := true
for _, name := range series {
if !user.HasWriteAccess(name) {
hasAccess = false
continue
}
err := self.DeleteRangeOfSeries(database, name, startTime, endTime)
if err != nil {
return err
}
}
if !hasAccess {
return fmt.Errorf("You don't have access to delete from one or more time series")
}
return nil
}
示例7: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series []*protocol.Series) error {
for _, s := range series {
seriesName := s.GetName()
if user.HasWriteAccess(seriesName) {
continue
}
return common.NewAuthorizationError("User %s doesn't have write permissions for %s", user.GetName(), seriesName)
}
err := self.CommitSeriesData(db, series, false)
if err != nil {
return err
}
for _, s := range series {
self.ProcessContinuousQueries(db, s)
}
return err
}
示例8: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series *protocol.Series) error {
if !user.HasWriteAccess(db) {
return fmt.Errorf("Insufficient permission to write to %s", db)
}
now := common.CurrentTime()
for _, p := range series.Points {
if p.Timestamp == nil {
p.Timestamp = &now
self.sequenceNumberLock.Lock()
self.currentSequenceNumber += 1
n := self.currentSequenceNumber
self.sequenceNumberLock.Unlock()
p.SequenceNumber = &n
} else if p.SequenceNumber == nil {
self.sequenceNumberLock.Lock()
self.currentSequenceNumber += 1
n := self.currentSequenceNumber
self.sequenceNumberLock.Unlock()
p.SequenceNumber = &n
}
}
return self.datastore.WriteSeriesData(db, series)
}
示例9: WriteSeriesData
func (self *CoordinatorImpl) WriteSeriesData(user common.User, db string, series *protocol.Series) error {
if !user.HasWriteAccess(db) {
return common.NewAuthorizationError("Insufficient permission to write to %s", db)
}
if len(series.Points) == 0 {
return fmt.Errorf("Can't write series with zero points.")
}
// break the series object into separate ones based on their ring location
// if times server assigned, all the points will go to the same place
serverAssignedTime := true
now := common.CurrentTime()
// assign sequence numbers
lastNumber, err := self.datastore.AtomicIncrement(POINT_SEQUENCE_NUMBER_KEY, len(series.Points))
if err != nil {
return err
}
lastNumber = lastNumber - uint64(len(series.Points)-1)
for _, p := range series.Points {
if p.Timestamp == nil {
p.Timestamp = &now
} else {
serverAssignedTime = false
}
if p.SequenceNumber == nil {
n := self.sequenceNumberWithServerId(lastNumber)
lastNumber++
p.SequenceNumber = &n
}
}
// if it's a single server setup, we don't need to bother with getting ring
// locations or logging requests or any of that, so just write to the local db and be done.
if self.clusterConfiguration.IsSingleServer() {
err := self.writeSeriesToLocalStore(&db, series)
return err
}
if serverAssignedTime {
location := common.RingLocation(&db, series.Name, series.Points[0].Timestamp)
i := self.clusterConfiguration.GetServerIndexByLocation(&location)
return self.handleClusterWrite(&i, &db, series)
}
// TODO: make this more efficient and not suck so much
// not all the same, so break things up
seriesToServerIndex := make(map[int]*protocol.Series)
for _, p := range series.Points {
location := common.RingLocation(&db, series.Name, p.Timestamp)
i := self.clusterConfiguration.GetServerIndexByLocation(&location)
s := seriesToServerIndex[i]
if s == nil {
s = &protocol.Series{Name: series.Name, Fields: series.Fields, Points: make([]*protocol.Point, 0)}
seriesToServerIndex[i] = s
}
s.Points = append(s.Points, p)
}
for serverIndex, s := range seriesToServerIndex {
err := self.handleClusterWrite(&serverIndex, &db, s)
if err != nil {
return err
}
}
return nil
}