mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-28 07:56:29 +00:00
Return error when failed to get user from database (#700)
* Return error when failed to get user from database * Use CCNET_ERR_INTERNAL --------- Co-authored-by: 杨赫然 <heran.yang@seafile.com>
This commit is contained in:
@@ -27,8 +27,6 @@
|
|||||||
#define DEBUG_FLAG SEAFILE_DEBUG_OTHER
|
#define DEBUG_FLAG SEAFILE_DEBUG_OTHER
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#define CCNET_ERR_INTERNAL 500
|
|
||||||
|
|
||||||
#ifndef SEAFILE_SERVER
|
#ifndef SEAFILE_SERVER
|
||||||
#include "../daemon/vc-utils.h"
|
#include "../daemon/vc-utils.h"
|
||||||
|
|
||||||
@@ -4726,7 +4724,7 @@ ccnet_rpc_get_emailuser (const char *email, GError **error)
|
|||||||
CcnetUserManager *user_mgr = seaf->user_mgr;
|
CcnetUserManager *user_mgr = seaf->user_mgr;
|
||||||
CcnetEmailUser *emailuser = NULL;
|
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;
|
return (GObject *)emailuser;
|
||||||
}
|
}
|
||||||
@@ -4742,7 +4740,7 @@ ccnet_rpc_get_emailuser_with_import (const char *email, GError **error)
|
|||||||
CcnetUserManager *user_mgr = seaf->user_mgr;
|
CcnetUserManager *user_mgr = seaf->user_mgr;
|
||||||
CcnetEmailUser *emailuser = NULL;
|
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;
|
return (GObject *)emailuser;
|
||||||
}
|
}
|
||||||
@@ -5448,7 +5446,7 @@ ccnet_rpc_get_org_emailusers (const char *url_prefix, int start , int limit,
|
|||||||
while (ptr) {
|
while (ptr) {
|
||||||
char *email = ptr->data;
|
char *email = ptr->data;
|
||||||
CcnetEmailUser *emailuser = ccnet_user_manager_get_emailuser (user_mgr,
|
CcnetEmailUser *emailuser = ccnet_user_manager_get_emailuser (user_mgr,
|
||||||
email);
|
email, NULL);
|
||||||
if (emailuser != NULL) {
|
if (emailuser != NULL) {
|
||||||
ret = g_list_prepend (ret, emailuser);
|
ret = g_list_prepend (ret, emailuser);
|
||||||
}
|
}
|
||||||
|
@@ -1147,26 +1147,41 @@ get_ldap_emailuser_cb (CcnetDBRow *row, void *data)
|
|||||||
static CcnetEmailUser*
|
static CcnetEmailUser*
|
||||||
get_emailuser (CcnetUserManager *manager,
|
get_emailuser (CcnetUserManager *manager,
|
||||||
const char *email,
|
const char *email,
|
||||||
gboolean import)
|
gboolean import,
|
||||||
|
GError **error)
|
||||||
{
|
{
|
||||||
CcnetDB *db = manager->priv->db;
|
CcnetDB *db = manager->priv->db;
|
||||||
char *sql;
|
char *sql;
|
||||||
CcnetEmailUser *emailuser = NULL;
|
CcnetEmailUser *emailuser = NULL;
|
||||||
char *email_down;
|
char *email_down;
|
||||||
|
int rc;
|
||||||
|
|
||||||
sql = "SELECT e.id, e.email, is_staff, is_active, ctime, passwd, reference_id, role "
|
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 "
|
" FROM EmailUser e LEFT JOIN UserRole ON e.email = UserRole.email "
|
||||||
" WHERE e.email=?";
|
" WHERE e.email=?";
|
||||||
if (seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
|
rc = seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
|
||||||
1, "string", email) > 0) {
|
1, "string", email);
|
||||||
|
if (rc > 0) {
|
||||||
return emailuser;
|
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));
|
email_down = g_ascii_strdown (email, strlen(email));
|
||||||
if (seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
|
rc = seaf_db_statement_foreach_row (db, sql, get_emailuser_cb, &emailuser,
|
||||||
1, "string", email_down) > 0) {
|
1, "string", email_down);
|
||||||
|
if (rc > 0) {
|
||||||
g_free (email_down);
|
g_free (email_down);
|
||||||
return emailuser;
|
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
|
#ifdef HAVE_LDAP
|
||||||
@@ -1179,6 +1194,9 @@ get_emailuser (CcnetUserManager *manager,
|
|||||||
get_ldap_emailuser_cb,
|
get_ldap_emailuser_cb,
|
||||||
&emailuser, 1, "string", email_down);
|
&emailuser, 1, "string", email_down);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
if (error) {
|
||||||
|
g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Database error");
|
||||||
|
}
|
||||||
ccnet_warning ("get ldapuser from db failed.\n");
|
ccnet_warning ("get ldapuser from db failed.\n");
|
||||||
g_free (email_down);
|
g_free (email_down);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1236,16 +1254,18 @@ get_emailuser (CcnetUserManager *manager,
|
|||||||
|
|
||||||
CcnetEmailUser*
|
CcnetEmailUser*
|
||||||
ccnet_user_manager_get_emailuser (CcnetUserManager *manager,
|
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*
|
CcnetEmailUser*
|
||||||
ccnet_user_manager_get_emailuser_with_import (CcnetUserManager *manager,
|
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*
|
CcnetEmailUser*
|
||||||
|
@@ -84,11 +84,12 @@ ccnet_user_manager_validate_emailuser (CcnetUserManager *manager,
|
|||||||
const char *passwd);
|
const char *passwd);
|
||||||
|
|
||||||
CcnetEmailUser*
|
CcnetEmailUser*
|
||||||
ccnet_user_manager_get_emailuser (CcnetUserManager *manager, const char *email);
|
ccnet_user_manager_get_emailuser (CcnetUserManager *manager, const char *email, GError **error);
|
||||||
|
|
||||||
CcnetEmailUser*
|
CcnetEmailUser*
|
||||||
ccnet_user_manager_get_emailuser_with_import (CcnetUserManager *manager,
|
ccnet_user_manager_get_emailuser_with_import (CcnetUserManager *manager,
|
||||||
const char *email);
|
const char *email,
|
||||||
|
GError **error);
|
||||||
CcnetEmailUser*
|
CcnetEmailUser*
|
||||||
ccnet_user_manager_get_emailuser_by_id (CcnetUserManager *manager, int id);
|
ccnet_user_manager_get_emailuser_by_id (CcnetUserManager *manager, int id);
|
||||||
|
|
||||||
|
@@ -35,7 +35,7 @@ static int getattr_user(SeafileSession *seaf, const char *user, struct stat *stb
|
|||||||
{
|
{
|
||||||
CcnetEmailUser *emailuser;
|
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) {
|
if (!emailuser) {
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
@@ -94,7 +94,7 @@ static int readdir_user(SeafileSession *seaf, const char *user,
|
|||||||
GList *list = NULL, *p;
|
GList *list = NULL, *p;
|
||||||
GString *name;
|
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) {
|
if (!emailuser) {
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
@@ -148,6 +148,8 @@ traverse_directory_win32 (wchar_t *path_w,
|
|||||||
|
|
||||||
#define CCNET_DOMAIN g_quark_from_string("ccnet")
|
#define CCNET_DOMAIN g_quark_from_string("ccnet")
|
||||||
|
|
||||||
|
#define CCNET_ERR_INTERNAL 500
|
||||||
|
|
||||||
|
|
||||||
struct timeval timeval_from_msec (uint64_t milliseconds);
|
struct timeval timeval_from_msec (uint64_t milliseconds);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user