ceph/src/rgw/rgw_user.h

116 lines
2.8 KiB
C
Raw Normal View History

2009-10-30 17:09:35 +00:00
#ifndef __RGW_USER_H
#define __RGW_USER_H
#include <string>
#include "include/types.h"
#include "rgw_common.h"
using namespace std;
#define USER_INFO_BUCKET_NAME ".users"
2009-07-03 01:42:12 +00:00
#define USER_INFO_EMAIL_BUCKET_NAME ".users.email"
#define RGW_USER_ANON_ID "anonymous"
2009-07-02 19:05:46 +00:00
2010-03-11 22:49:27 +00:00
/**
* A string wrapper that includes encode/decode functions
* for easily accessing a UID in all forms
*/
struct RGWUID
2009-07-03 01:42:12 +00:00
{
string user_id;
void encode(bufferlist& bl) const {
::encode(user_id, bl);
}
void decode(bufferlist::iterator& bl) {
::decode(user_id, bl);
}
};
WRITE_CLASS_ENCODER(RGWUID)
2009-07-03 01:42:12 +00:00
2010-03-11 22:49:27 +00:00
/**
* Get the info for a user out of storage.
* Returns: 0 on success, -ERR# on failure
*/
extern int rgw_get_user_info(string user_id, RGWUserInfo& info);
2010-03-11 22:49:27 +00:00
/**
* Get the anonymous (ie, unauthenticated) user info.
*/
extern void rgw_get_anon_user(RGWUserInfo& info);
2010-03-11 22:49:27 +00:00
/**
* Save the given user information to storage.
* Returns: 0 on success, -ERR# on failure.
*/
extern int rgw_store_user_info(RGWUserInfo& info);
2010-03-11 22:49:27 +00:00
/**
* Given an email, finds the user_id associated with it.
* returns: 0 on success, -ERR# on failure (including nonexistence)
*/
extern int rgw_get_uid_by_email(string& email, string& user_id);
/**
* Given an RGWUserInfo, deletes the user and its bucket ACLs.
*/
extern int rgw_delete_user(RGWUserInfo& user);
2010-03-11 22:49:27 +00:00
/**
* Store a list of the user's buckets, with associated functinos.
*/
class RGWUserBuckets
{
map<string, RGWObjEnt> buckets;
public:
RGWUserBuckets() {}
void encode(bufferlist& bl) const {
::encode(buckets, bl);
}
void decode(bufferlist::iterator& bl) {
::decode(buckets, bl);
}
2010-03-11 22:49:27 +00:00
/**
* Check if the user owns a bucket by the given name.
*/
bool owns(string& name) {
map<string, RGWObjEnt>::iterator iter;
iter = buckets.find(name);
return (iter != buckets.end());
}
2010-03-11 22:49:27 +00:00
/**
* Add a (created) bucket to the user's bucket list.
*/
void add(RGWObjEnt& bucket) {
buckets[bucket.name] = bucket;
}
2010-03-11 22:49:27 +00:00
/**
* Remove a bucket from the user's list by name.
*/
void remove(string& name) {
map<string, RGWObjEnt>::iterator iter;
iter = buckets.find(name);
if (iter != buckets.end()) {
buckets.erase(iter);
}
}
2010-03-11 22:49:27 +00:00
/**
* Get the user's buckets as a map.
*/
map<string, RGWObjEnt>& get_buckets() { return buckets; }
};
WRITE_CLASS_ENCODER(RGWUserBuckets)
2010-03-11 22:49:27 +00:00
/**
* Get all the buckets owned by a user and fill up an RGWUserBuckets with them.
* Returns: 0 on success, -ERR# on failure.
*/
extern int rgw_get_user_buckets(string user_id, RGWUserBuckets& buckets);
2010-03-11 22:49:27 +00:00
/**
* Store the set of buckets associated with a user.
* This completely overwrites any previously-stored list, so be careful!
* Returns 0 on success, -ERR# otherwise.
*/
extern int rgw_put_user_buckets(string user_id, RGWUserBuckets& buckets);
#endif