func (self *Permissions) AuthorizeChangeDbUserPassword(user common.User, db string, targetUsername string) (ok bool, err common.AuthorizationError) { if !user.IsDbAdmin(db) && !(user.GetDb() == db && user.GetName() == targetUsername) { return false, common.NewAuthorizationError("Insufficient permissions to change db user password for %s on %s", targetUsername, db) } return true, "" }
func (self *Coordinator) RunQueryWithContext(user common.User, database string, queryString string, p engine.Processor, requestContext *api.RequestContext) (err error) { log.Info("Start Query: db: %s, u: %s, q: %s", database, user.GetName(), queryString) runningQuery := NewRunningQuery(user.GetName(), database, queryString, time.Now(), requestContext.RemoteAddr()) self.monitor.StartQuery(runningQuery) defer func() { self.monitor.EndQuery(runningQuery) }() defer func(t time.Time) { log.Debug("End Query: db: %s, u: %s, q: %s, t: %s", database, user.GetName(), queryString, time.Now().Sub(t)) }(time.Now()) // don't let a panic pass beyond RunQuery defer common.RecoverFunc(database, queryString, nil) q, err := parser.ParseQuery(queryString) if err != nil { return err } for _, query := range q { err := self.runSingleQuery(user, database, query, p) if err != nil { return err } } return nil }
func (self *Coordinator) 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 }