mirror of
https://github.com/haiwen/ccnet-server.git
synced 2025-04-27 18:25:06 +00:00
Update is_group_user().
This commit is contained in:
parent
c095959cce
commit
4a3cfbcb3d
@ -275,7 +275,7 @@ ccnet_start_rpc(CcnetSession *session)
|
||||
searpc_server_register_function ("ccnet-threaded-rpcserver",
|
||||
ccnet_rpc_is_group_user,
|
||||
"is_group_user",
|
||||
searpc_signature_int__int_string());
|
||||
searpc_signature_int__int_string_int());
|
||||
searpc_server_register_function ("ccnet-threaded-rpcserver",
|
||||
ccnet_rpc_set_group_creator,
|
||||
"set_group_creator",
|
||||
@ -1248,7 +1248,7 @@ ccnet_rpc_remove_group_user (const char *user, GError **error)
|
||||
}
|
||||
|
||||
int
|
||||
ccnet_rpc_is_group_user (int group_id, const char *user, GError **error)
|
||||
ccnet_rpc_is_group_user (int group_id, const char *user, int in_structure, GError **error)
|
||||
{
|
||||
CcnetGroupManager *group_mgr = ((CcnetServerSession *)session)->group_mgr;
|
||||
if (!user || group_id < 0) {
|
||||
@ -1256,7 +1256,7 @@ ccnet_rpc_is_group_user (int group_id, const char *user, GError **error)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ccnet_group_manager_is_group_user (group_mgr, group_id, user);
|
||||
return ccnet_group_manager_is_group_user (group_mgr, group_id, user, in_structure ? TRUE : FALSE);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -241,7 +241,7 @@ int
|
||||
ccnet_rpc_remove_group_user (const char *user, GError **error);
|
||||
|
||||
int
|
||||
ccnet_rpc_is_group_user (int group_id, const char *user, GError **error);
|
||||
ccnet_rpc_is_group_user (int group_id, const char *user, int in_structure, GError **error);
|
||||
|
||||
int
|
||||
ccnet_rpc_set_group_creator (int group_id, const char *user_name,
|
||||
|
@ -958,13 +958,35 @@ ccnet_group_manager_remove_group_user (CcnetGroupManager *mgr,
|
||||
int
|
||||
ccnet_group_manager_is_group_user (CcnetGroupManager *mgr,
|
||||
int group_id,
|
||||
const char *user)
|
||||
const char *user,
|
||||
gboolean in_structure)
|
||||
{
|
||||
CcnetDB *db = mgr->priv->db;
|
||||
|
||||
return ccnet_db_statement_exists (db, "SELECT group_id FROM GroupUser "
|
||||
"WHERE group_id=? AND user_name=?",
|
||||
2, "int", group_id, "string", user);
|
||||
gboolean exists = ccnet_db_statement_exists (db, "SELECT group_id FROM GroupUser "
|
||||
"WHERE group_id=? AND user_name=?",
|
||||
2, "int", group_id, "string", user);
|
||||
if (!in_structure || exists)
|
||||
return exists ? 1 : 0;
|
||||
|
||||
GList *ptr;
|
||||
GList *groups = ccnet_group_manager_get_groups_by_user (mgr, user, TRUE, NULL);
|
||||
if (!groups)
|
||||
return 0;
|
||||
|
||||
CcnetGroup *group;
|
||||
int id;
|
||||
for (ptr = groups; ptr; ptr = ptr->next) {
|
||||
group = ptr->data;
|
||||
g_object_get (group, "id", &id, NULL);
|
||||
if (group_id == id) {
|
||||
exists = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
g_list_free_full (groups, g_object_unref);
|
||||
|
||||
return exists ? 1 : 0;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -100,7 +100,8 @@ ccnet_group_manager_remove_group_user (CcnetGroupManager *mgr,
|
||||
int
|
||||
ccnet_group_manager_is_group_user (CcnetGroupManager *mgr,
|
||||
int group_id,
|
||||
const char *user);
|
||||
const char *user,
|
||||
gboolean in_structure);
|
||||
|
||||
GList*
|
||||
ccnet_group_manager_get_all_groups (CcnetGroupManager *mgr,
|
||||
|
@ -331,8 +331,8 @@ class CcnetThreadedRpcClient(RpcClientBase):
|
||||
def remove_group_user(self, username):
|
||||
pass
|
||||
|
||||
@searpc_func("int", ["int", "string"])
|
||||
def is_group_user(self, group_id, user):
|
||||
@searpc_func("int", ["int", "string", "int"])
|
||||
def is_group_user(self, group_id, user, in_structure):
|
||||
pass
|
||||
|
||||
@searpc_func("int", ["int", "string"])
|
||||
|
Loading…
Reference in New Issue
Block a user