Compare commits

...
Sign in to create a new pull request.

3 commits

Author SHA1 Message Date
杨赫然
c9f66ea7a3 Delete gen_jwt_token API 2024-09-18 16:30:27 +08:00
杨赫然
c63bcc4f45 Use CCNET_ERR_INTERNAL 2024-09-18 16:15:05 +08:00
杨赫然
9e3242d948 Return error when failed to get user from database 2024-09-18 11:35:39 +08:00
10 changed files with 39 additions and 49 deletions

View file

@ -27,8 +27,6 @@
#define DEBUG_FLAG SEAFILE_DEBUG_OTHER
#include "log.h"
#define CCNET_ERR_INTERNAL 500
#ifndef SEAFILE_SERVER
#include "../daemon/vc-utils.h"
@ -4645,22 +4643,6 @@ seafile_search_files_by_path (const char *repo_id, const char *path, const char
return g_list_reverse (ret);
}
char *
seafile_generate_notif_server_jwt (const char *repo_id, const char *username, GError **error)
{
if (!repo_id || !username) {
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_BAD_ARGS, "Argument should not be null");
return NULL;
}
char *token = seaf_gen_notif_server_jwt (repo_id, username);
if (!token) {
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_INTERNAL,
"Failed to generate jwt token");
}
return token;
}
/*RPC functions merged from ccnet-server*/
int
ccnet_rpc_add_emailuser (const char *email, const char *passwd,
@ -4726,7 +4708,7 @@ ccnet_rpc_get_emailuser (const char *email, GError **error)
CcnetUserManager *user_mgr = seaf->user_mgr;
CcnetEmailUser *emailuser = NULL;
emailuser = ccnet_user_manager_get_emailuser (user_mgr, email);
emailuser = ccnet_user_manager_get_emailuser (user_mgr, email, error);
return (GObject *)emailuser;
}
@ -4742,7 +4724,7 @@ ccnet_rpc_get_emailuser_with_import (const char *email, GError **error)
CcnetUserManager *user_mgr = seaf->user_mgr;
CcnetEmailUser *emailuser = NULL;
emailuser = ccnet_user_manager_get_emailuser_with_import (user_mgr, email);
emailuser = ccnet_user_manager_get_emailuser_with_import (user_mgr, email, error);
return (GObject *)emailuser;
}
@ -5448,7 +5430,7 @@ ccnet_rpc_get_org_emailusers (const char *url_prefix, int start , int limit,
while (ptr) {
char *email = ptr->data;
CcnetEmailUser *emailuser = ccnet_user_manager_get_emailuser (user_mgr,
email);
email, NULL);
if (emailuser != NULL) {
ret = g_list_prepend (ret, emailuser);
}

View file

@ -1147,26 +1147,41 @@ get_ldap_emailuser_cb (CcnetDBRow *row, void *data)
static CcnetEmailUser*
get_emailuser (CcnetUserManager *manager,
const char *email,
gboolean import)
gboolean import,
GError **error)
{
CcnetDB *db = manager->priv->db;
char *sql;
CcnetEmailUser *emailuser = NULL;
char *email_down;
int rc;
sql = "SELECT e.id, e.email, is_staff, is_active, ctime, passwd, reference_id, role "
" FROM EmailUser e LEFT JOIN UserRole ON e.email = UserRole.email "
" WHERE e.email=?";
if (seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
1, "string", email) > 0) {
rc = seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
1, "string", email);
if (rc > 0) {
return emailuser;
} else if (rc < 0) {
if (error) {
g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Database error");
}
return NULL;
}
email_down = g_ascii_strdown (email, strlen(email));
if (seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
1, "string", email_down) > 0) {
rc = seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
1, "string", email_down);
if (rc > 0) {
g_free (email_down);
return emailuser;
} else if (rc < 0) {
if (error) {
g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Database error");
}
g_free (email_down);
return NULL;
}
#ifdef HAVE_LDAP
@ -1179,6 +1194,9 @@ get_emailuser (CcnetUserManager *manager,
get_ldap_emailuser_cb,
&emailuser, 1, "string", email_down);
if (ret < 0) {
if (error) {
g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Database error");
}
ccnet_warning ("get ldapuser from db failed.\n");
g_free (email_down);
return NULL;
@ -1236,16 +1254,18 @@ get_emailuser (CcnetUserManager *manager,
CcnetEmailUser*
ccnet_user_manager_get_emailuser (CcnetUserManager *manager,
const char *email)
const char *email,
GError **error)
{
return get_emailuser (manager, email, FALSE);
return get_emailuser (manager, email, FALSE, error);
}
CcnetEmailUser*
ccnet_user_manager_get_emailuser_with_import (CcnetUserManager *manager,
const char *email)
const char *email,
GError **error)
{
return get_emailuser (manager, email, TRUE);
return get_emailuser (manager, email, TRUE, error);
}
CcnetEmailUser*

View file

@ -84,11 +84,12 @@ ccnet_user_manager_validate_emailuser (CcnetUserManager *manager,
const char *passwd);
CcnetEmailUser*
ccnet_user_manager_get_emailuser (CcnetUserManager *manager, const char *email);
ccnet_user_manager_get_emailuser (CcnetUserManager *manager, const char *email, GError **error);
CcnetEmailUser*
ccnet_user_manager_get_emailuser_with_import (CcnetUserManager *manager,
const char *email);
const char *email,
GError **error);
CcnetEmailUser*
ccnet_user_manager_get_emailuser_by_id (CcnetUserManager *manager, int id);

View file

@ -35,7 +35,7 @@ static int getattr_user(SeafileSession *seaf, const char *user, struct stat *stb
{
CcnetEmailUser *emailuser;
emailuser = ccnet_user_manager_get_emailuser (seaf->user_mgr, user);
emailuser = ccnet_user_manager_get_emailuser (seaf->user_mgr, user, NULL);
if (!emailuser) {
return -ENOENT;
}

View file

@ -94,7 +94,7 @@ static int readdir_user(SeafileSession *seaf, const char *user,
GList *list = NULL, *p;
GString *name;
emailuser = ccnet_user_manager_get_emailuser (seaf->user_mgr, user);
emailuser = ccnet_user_manager_get_emailuser (seaf->user_mgr, user, NULL);
if (!emailuser) {
return -ENOENT;
}

View file

@ -1155,9 +1155,6 @@ seafile_search_files (const char *repo_id, const char *str, GError **error);
GList *
seafile_search_files_by_path (const char *repo_id, const char *path, const char *str, GError **error);
char *
seafile_generate_notif_server_jwt (const char *repo_id, const char *username, GError **error);
/*Following is ccnet rpc*/
int
ccnet_rpc_add_emailuser (const char *email, const char *passwd,

View file

@ -148,6 +148,8 @@ traverse_directory_win32 (wchar_t *path_w,
#define CCNET_DOMAIN g_quark_from_string("ccnet")
#define CCNET_ERR_INTERNAL 500
struct timeval timeval_from_msec (uint64_t milliseconds);

View file

@ -826,10 +826,6 @@ class SeafServerThreadedRpcClient(NamedPipeClient):
def search_files_by_path(self, repo_id, path, search_str):
pass
@searpc_func("string", ["string", "string"])
def generate_notif_server_jwt(self, repo_id, username):
pass
#user management
@searpc_func("int", ["string", "string", "int", "int"])
def add_emailuser(self, email, passwd, is_staff, is_active):

View file

@ -862,9 +862,6 @@ class SeafileAPI(object):
def search_files_by_path (self, repo_id, path, search_str):
return seafserv_threaded_rpc.search_files_by_path(repo_id, path, search_str)
def gen_notif_server_jwt (self, repo_id, username):
return seafserv_threaded_rpc.generate_notif_server_jwt (repo_id, username)
seafile_api = SeafileAPI()
class CcnetAPI(object):

View file

@ -355,11 +355,6 @@ static void start_rpc_service (const char *seafile_dir,
"search_files_by_path",
searpc_signature_objlist__string_string_string());
searpc_server_register_function ("seafserv-threaded-rpcserver",
seafile_generate_notif_server_jwt,
"generate_notif_server_jwt",
searpc_signature_string__string_string());
/* share repo to user */
searpc_server_register_function ("seafserv-threaded-rpcserver",
seafile_add_share,