mirror of
https://github.com/haiwen/ccnet-server.git
synced 2025-09-07 07:40:31 +00:00
Add rpc get_emailusers_in_list().
This commit is contained in:
@@ -195,6 +195,10 @@ ccnet_start_rpc(CcnetSession *session)
|
|||||||
ccnet_rpc_get_superusers,
|
ccnet_rpc_get_superusers,
|
||||||
"get_superusers",
|
"get_superusers",
|
||||||
searpc_signature_objlist__void());
|
searpc_signature_objlist__void());
|
||||||
|
searpc_server_register_function ("ccnet-threaded-rpcserver",
|
||||||
|
ccnet_rpc_get_emailusers_in_list,
|
||||||
|
"get_emailusers_in_list",
|
||||||
|
searpc_signature_objlist__string());
|
||||||
|
|
||||||
/* RSA sign a message with my private key. */
|
/* RSA sign a message with my private key. */
|
||||||
searpc_server_register_function ("ccnet-rpcserver",
|
searpc_server_register_function ("ccnet-rpcserver",
|
||||||
@@ -1700,4 +1704,16 @@ ccnet_rpc_get_groups_members (const char *group_ids, GError **error)
|
|||||||
return ccnet_group_manager_get_groups_members (group_mgr, group_ids, error);
|
return ccnet_group_manager_get_groups_members (group_mgr, group_ids, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GList *
|
||||||
|
ccnet_rpc_get_emailusers_in_list(const char *user_list, GError **error)
|
||||||
|
{
|
||||||
|
if (!user_list) {
|
||||||
|
g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Bad arguments");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
CcnetUserManager *user_mgr = ((CcnetServerSession *)session)->user_mgr;
|
||||||
|
|
||||||
|
return ccnet_user_manager_get_emailusers_in_list (user_mgr, user_list, error);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CCNET_SERVER */
|
#endif /* CCNET_SERVER */
|
||||||
|
@@ -328,6 +328,9 @@ ccnet_rpc_set_reference_id (const char *primary_id, const char *reference_id, GE
|
|||||||
char *
|
char *
|
||||||
ccnet_rpc_get_primary_id (const char *email, GError **error);
|
ccnet_rpc_get_primary_id (const char *email, GError **error);
|
||||||
|
|
||||||
|
GList *
|
||||||
|
ccnet_rpc_get_emailusers_in_list(const char *user_list, GError **error);
|
||||||
|
|
||||||
#endif /* CCNET_SERVER */
|
#endif /* CCNET_SERVER */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1901,3 +1901,59 @@ ccnet_user_manager_get_login_id (CcnetUserManager *manager, const char *primary_
|
|||||||
#endif
|
#endif
|
||||||
return g_strdup (primary_id);
|
return g_strdup (primary_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GList *
|
||||||
|
ccnet_user_manager_get_emailusers_in_list (CcnetUserManager *manager,
|
||||||
|
const char *user_list,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const char *username;
|
||||||
|
json_t *j_array = NULL, *j_obj;
|
||||||
|
json_error_t j_error;
|
||||||
|
GList *ret = NULL;
|
||||||
|
const char *args[20];
|
||||||
|
|
||||||
|
j_array = json_loadb (user_list, strlen(user_list), 0, &j_error);
|
||||||
|
if (!j_array) {
|
||||||
|
g_set_error (error, CCNET_DOMAIN, 0, "Bad args.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* Query 20 users at most. */
|
||||||
|
size_t user_num = json_array_size (j_array);
|
||||||
|
if (user_num > 20) {
|
||||||
|
g_set_error (error, CCNET_DOMAIN, 0, "Number of users exceeds 20.");
|
||||||
|
json_decref (j_array);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
GString *sql = g_string_new ("");
|
||||||
|
g_string_printf (sql, "SELECT e.id, e.email, is_staff, is_active, ctime, "
|
||||||
|
"role, passwd FROM EmailUser e "
|
||||||
|
"LEFT JOIN UserRole r ON e.email = r.email "
|
||||||
|
"WHERE e.email IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
||||||
|
|
||||||
|
for (i = 0; i < 20; i++) {
|
||||||
|
if (i < user_num) {
|
||||||
|
j_obj = json_array_get (j_array, i);
|
||||||
|
username = json_string_value(j_obj);
|
||||||
|
args[i] = username;
|
||||||
|
} else {
|
||||||
|
args[i] = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
json_decref (j_array);
|
||||||
|
|
||||||
|
if (ccnet_db_statement_foreach_row (manager->priv->db, sql->str, get_emailusers_cb, &ret, 20,
|
||||||
|
"string", args[0], "string", args[1], "string", args[2],
|
||||||
|
"string", args[3], "string", args[4], "string", args[5],
|
||||||
|
"string", args[6], "string", args[7], "string", args[8],
|
||||||
|
"string", args[9], "string", args[10], "string", args[11],
|
||||||
|
"string", args[12], "string", args[13], "string", args[14],
|
||||||
|
"string", args[15], "string", args[16], "string", args[17],
|
||||||
|
"string", args[18], "string", args[19]) < 0)
|
||||||
|
ccnet_warning("Failed to get users in list %s.\n", user_list);
|
||||||
|
|
||||||
|
g_string_free (sql, TRUE);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@@ -168,4 +168,9 @@ ccnet_user_manager_get_primary_id (CcnetUserManager *manager,
|
|||||||
char *
|
char *
|
||||||
ccnet_user_manager_get_login_id (CcnetUserManager *manager,
|
ccnet_user_manager_get_login_id (CcnetUserManager *manager,
|
||||||
const char *primary_id);
|
const char *primary_id);
|
||||||
|
|
||||||
|
GList *
|
||||||
|
ccnet_user_manager_get_emailusers_in_list (CcnetUserManager *manager,
|
||||||
|
const char *user_list,
|
||||||
|
GError **error);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -450,3 +450,7 @@ class CcnetThreadedRpcClient(RpcClientBase):
|
|||||||
@searpc_func("objlist", ["string"])
|
@searpc_func("objlist", ["string"])
|
||||||
def get_groups_members(self, group_ids):
|
def get_groups_members(self, group_ids):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@searpc_func("objlist", ["string"])
|
||||||
|
def get_emailusers_in_list(self, user_list):
|
||||||
|
pass
|
||||||
|
Reference in New Issue
Block a user