1
// authentication_table.h
3
/* Copyright 2012 10gen Inc.
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
22
#include "mongo/client/authlevel.h"
23
#include "mongo/db/jsobj.h"
28
* An AuthenticationTable object is present within every AuthenticationInfo object and
29
* contains the map of dbname to auth level for the current client.
30
* All syncronization to this class is done through its encompassing AuthenticationInfo.
32
class AuthenticationTable {
34
AuthenticationTable() {}
35
~AuthenticationTable() {}
37
void addAuth( const std::string& dbname,
38
const std::string& user,
39
const Auth::Level& level );
41
void addAuth( const std::string& dbname , const Auth& auth );
43
void removeAuth( const std::string& dbname );
47
Auth getAuthForDb( const std::string& dbname ) const;
49
// Takes the authentication state from the given BSONObj, replcacing whatever state it had.
50
void setFromBSON( const BSONObj& obj );
52
BSONObj toBSON() const;
54
BSONObj copyCommandObjAddingAuth( const BSONObj& cmdObj ) const;
56
static const AuthenticationTable& getInternalSecurityAuthenticationTable();
57
// Only used once at startup to setup the authentication table.
58
static AuthenticationTable& getMutableInternalSecurityAuthenticationTable();
60
static const string fieldName;
63
bool _shouldSendInternalSecurityTable() const;
65
typedef map<std::string,Auth> DBAuthMap;
66
DBAuthMap _dbs; // dbname -> auth