1
0
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:
cuihaikuo 2018-05-08 14:02:52 +08:00
parent c095959cce
commit 4a3cfbcb3d
5 changed files with 34 additions and 11 deletions

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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,

View File

@ -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"])