diff --git a/cnf/auth.go b/cnf/auth.go new file mode 100644 index 00000000..5d9093ce --- /dev/null +++ b/cnf/auth.go @@ -0,0 +1,29 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cnf + +type Auth struct { + Data interface{} `json:"id" msgpack:"id"` + Kind Kind `json:"-" msgpack:"-"` + Scope string `json:"-" msgpack:"-"` + Possible struct { + NS string + DB string + } `json:"-" msgpack:"-"` + Selected struct { + NS string + DB string + } `json:"-" msgpack:"-"` +} diff --git a/cnf/cnf.go b/cnf/cnf.go index ac4740b9..36d3445d 100644 --- a/cnf/cnf.go +++ b/cnf/cnf.go @@ -21,58 +21,6 @@ import ( var Settings *Options -type Kind int - -func (k Kind) String() string { - switch k { - default: - return "NO" - case AuthKV: - return "KV" - case AuthNS: - return "NS" - case AuthDB: - return "DB" - case AuthSC: - return "SC" - } -} - -func (k Kind) MarshalText() (data []byte, err error) { - return []byte(k.String()), err -} - -func (k Kind) UnmarshalText(text []byte) error { - return nil -} - -const ( - // Root access - AuthKV Kind = iota - // Namespace access - AuthNS - // Database access - AuthDB - // Scoped user access - AuthSC - // No access - AuthNO -) - -type Auth struct { - Kind Kind - Data interface{} - Scope string - Possible struct { - NS string - DB string - } - Selected struct { - NS string - DB string - } -} - // Options defines global configuration options type Options struct { DB struct { diff --git a/cnf/kind.go b/cnf/kind.go new file mode 100644 index 00000000..42e2c4c6 --- /dev/null +++ b/cnf/kind.go @@ -0,0 +1,53 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cnf + +const ( + // Root access + AuthKV Kind = iota + // Namespace access + AuthNS + // Database access + AuthDB + // Scoped user access + AuthSC + // No access + AuthNO +) + +type Kind int + +func (k Kind) String() string { + switch k { + default: + return "NO" + case AuthKV: + return "KV" + case AuthNS: + return "NS" + case AuthDB: + return "DB" + case AuthSC: + return "SC" + } +} + +func (k Kind) MarshalText() (data []byte, err error) { + return []byte(k.String()), err +} + +func (k Kind) UnmarshalText(text []byte) error { + return nil +} diff --git a/web/rpc.go b/web/rpc.go index 7c1a8772..7569c759 100644 --- a/web/rpc.go +++ b/web/rpc.go @@ -16,6 +16,7 @@ package web import ( "github.com/abcum/fibre" + "github.com/abcum/surreal/cnf" "github.com/abcum/surreal/db" "github.com/abcum/surreal/sql" ) @@ -23,11 +24,11 @@ import ( type rpc struct{} func (r *rpc) Info(c *fibre.Context) (interface{}, error) { - return c.Get("auth"), nil + return c.Get("auth").(*cnf.Auth).Data, nil } func (r *rpc) Auth(c *fibre.Context, auth string) (interface{}, error) { - return c.Get("auth"), checkBearer(c, auth, func() error { return nil }) + return c.Get("auth").(*cnf.Auth).Data, checkBearer(c, auth, ignore) } func (r *rpc) Query(c *fibre.Context, sql string, vars map[string]interface{}) (interface{}, error) {