");"
-int _account_insert_to_db(account_s* account, int pid, int *account_id);
+int _account_insert_to_db(account_s* account, int pid, int uid, int *account_id);
int _account_db_open(int mode, int pid);
int _account_db_close(void);
int _account_type_insert_to_db(account_type_s* account_type, int* account_type_id);
GSList* _account_db_query_all(int pid);
GSList* _account_type_query_all(void);
-int _account_delete(int pid, int account_id);
-int _account_delete_from_db_by_user_name(int pid, const char *user_name, const char *package_name);
-int _account_delete_from_db_by_package_name(int pid, const char *package_name, gboolean permission);
-int _account_update_to_db_by_id(int pid, account_s *account, int account_id);
+int _account_delete(int pid, int uid, int account_id);
+int _account_delete_from_db_by_user_name(int pid, int uid, const char *user_name, const char *package_name);
+int _account_delete_from_db_by_package_name(int pid, int uid, const char *package_name, gboolean permission);
+int _account_update_to_db_by_id(int pid, int uid, account_s *account, int account_id);
int _account_get_total_count_from_db(gboolean include_hidden, int *count);
int _account_query_account_by_account_id(int pid, int account_db_id, account_s *account_record);
-int _account_update_to_db_by_user_name(int pid, account_s* account, const char *user_name, const char *package_name);
+int _account_update_to_db_by_user_name(int pid, int uid, account_s* account, const char *user_name, const char *package_name);
int _account_type_query_label_by_locale(const char* app_id, const char* locale, char **label);
GSList* _account_type_query_by_provider_feature(const char* key, int *error_code);
GList* _account_query_account_by_user_name(int pid, const char *user_name, int *error_code);
GList* _account_query_account_by_capability(int pid, const char* capability_type, const int capability_value, int *error_code);
GList* _account_query_account_by_capability_type(int pid, const char* capability_type, int *error_code);
GSList* _account_get_capability_list_by_account_id(int account_id, int *error_code);
-int _account_update_sync_status_by_id(int account_db_id, const int sync_status);
+int _account_update_sync_status_by_id(int uid, int account_db_id, const int sync_status);
GSList* _account_type_query_provider_feature_by_app_id(const char* app_id, int *error_code);
bool _account_type_query_supported_feature(const char* app_id, const char* capability, int *error_code);
int _account_type_update_to_db_by_app_id(account_type_s *account_type, const char* app_id);
#include <pkgmgr-info.h>
#include <aul.h>
#include <unistd.h>
+#include <tzplatform_config.h>
#include <dbg.h>
#include <account_ipc_marshal.h>
return appid_ret;
}
-static int _account_check_account_type_with_appid_group(const char* appid, char** verified_appid)
+static int _account_check_account_type_with_appid_group(int uid, const char* appid, char** verified_appid)
{
int error_code = ACCOUNT_ERROR_NOT_REGISTERED_PROVIDER;
pkgmgrinfo_appinfo_h ahandle=NULL;
}
/* Get app id family which is stored in account database */
int pkgmgr_ret = -1;
- pkgmgr_ret = pkgmgrinfo_appinfo_get_appinfo(appid, &ahandle);
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_appinfo(appid, &ahandle);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_usr_appinfo(appid, uid, &ahandle);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_appinfo(%d)", pkgmgr_ret);
}
+
pkgmgr_ret = pkgmgrinfo_appinfo_get_pkgid(ahandle, &package_id);
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_pkgid(%d)", pkgmgr_ret);
}
- pkgmgr_ret = pkgmgrinfo_pkginfo_get_pkginfo(package_id, &phandle);
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_pkginfo_get_pkginfo(package_id, &phandle);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(package_id, uid, &phandle);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_pkginfo_get_pkginfo(%d)", pkgmgr_ret);
}
- pkgmgr_ret = pkgmgrinfo_appinfo_get_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list);
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_usr_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list, uid);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_list(%d)", pkgmgr_ret);
}
return error_code;
}
-static int _account_check_appid_group_with_package_name(const char* appid, char* package_name)
+static int _account_check_appid_group_with_package_name(int uid, const char* appid, char* package_name)
{
int error_code = ACCOUNT_ERROR_PERMISSION_DENIED;
pkgmgrinfo_appinfo_h ahandle=NULL;
}
/* Get app id family which is stored in account database */
int pkgmgr_ret = -1;
- pkgmgr_ret = pkgmgrinfo_appinfo_get_appinfo(appid, &ahandle);
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_appinfo(appid, &ahandle);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_usr_appinfo(appid, uid, &ahandle);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_appinfo(%d)", pkgmgr_ret);
}
+
pkgmgr_ret = pkgmgrinfo_appinfo_get_pkgid(ahandle, &package_id);
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_pkgid(%d)", pkgmgr_ret);
}
- pkgmgr_ret = pkgmgrinfo_pkginfo_get_pkginfo(package_id, &phandle);
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_pkginfo_get_pkginfo(package_id, &phandle);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(package_id, uid, &phandle);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_pkginfo_get_pkginfo(%d)", pkgmgr_ret);
}
- pkgmgr_ret = pkgmgrinfo_appinfo_get_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list);
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER) {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list);
+ } else {
+ pkgmgr_ret = pkgmgrinfo_appinfo_get_usr_list(phandle, PMINFO_ALL_APP, _account_get_current_appid_cb, (void *)&appid_list, uid);
+ }
if( pkgmgr_ret != PMINFO_R_OK ){
ACCOUNT_DEBUG("pkgmgrinfo_appinfo_get_list(%d)", pkgmgr_ret);
}
-static int _account_update_account_by_user_name(int pid, account_s *account, const char *user_name, const char *package_name)
+static int _account_update_account_by_user_name(int pid, int uid, account_s *account, const char *user_name, const char *package_name)
{
int rc = 0, binding_count = 0, count = 0;
char query[ACCOUNT_SQL_LEN_MAX] = {0, };
char* verified_appid = NULL;
current_appid = _account_get_current_appid(pid);
- error_code = _account_check_account_type_with_appid_group(current_appid, &verified_appid);
+ error_code = _account_check_account_type_with_appid_group(uid, current_appid, &verified_appid);
_ACCOUNT_FREE(current_appid);
_ACCOUNT_FREE(verified_appid);
return error_code;
}
-int _account_insert_to_db(account_s* account, int pid, int *account_id)
+int _account_insert_to_db(account_s* account, int pid, int uid, int *account_id)
{
_INFO("");
int error_code = ACCOUNT_ERROR_NONE;
_INFO("");
char* verified_appid = NULL;
- error_code = _account_check_account_type_with_appid_group(appid, &verified_appid);//FIX
+ error_code = _account_check_account_type_with_appid_group(uid, appid, &verified_appid);//FIX
_ACCOUNT_FREE(appid);
if(error_code != ACCOUNT_ERROR_NONE)
{
}
-static int _account_update_account(int pid, account_s *account, int account_id)
+static int _account_update_account(int pid, int uid, account_s *account, int account_id)
{
int rc = 0, binding_count =0;
char query[ACCOUNT_SQL_LEN_MAX] = {0, };
return ACCOUNT_ERROR_RECORD_NOT_FOUND;
}
- error_code = _account_check_appid_group_with_package_name(current_appid, package_name);
+ error_code = _account_check_appid_group_with_package_name(uid, current_appid, package_name);
ACCOUNT_DEBUG( "UPDATE:account_id[%d],current_appid[%s]package_name[%s]", account_id, current_appid, package_name); // TODO: remove the log later.
_ACCOUNT_FREE(current_appid);
}
-int _account_update_to_db_by_id(int pid, account_s* account, int account_id)
+int _account_update_to_db_by_id(int pid, int uid, account_s* account, int account_id)
{
ACCOUNT_RETURN_VAL((account != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("DATA IS NULL"));
ACCOUNT_RETURN_VAL((account_id > 0), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("Account id is not valid"));
pthread_mutex_lock(&account_mutex);
- error_code = _account_update_account(pid, data, account_id);
+ error_code = _account_update_account(pid, uid, data, account_id);
if(error_code != ACCOUNT_ERROR_NONE) {
pthread_mutex_unlock(&account_mutex);
}
-int _account_update_to_db_by_user_name(int pid, account_s* account, const char *user_name, const char *package_name)
+int _account_update_to_db_by_user_name(int pid, int uid, account_s* account, const char *user_name, const char *package_name)
{
ACCOUNT_RETURN_VAL((user_name != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("USER NAME IS NULL"));
ACCOUNT_RETURN_VAL((package_name != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("PACKAGE NAME IS NULL"));
pthread_mutex_lock(&account_mutex);
- error_code = _account_update_account_by_user_name(pid, data, user_name, package_name);
+ error_code = _account_update_account_by_user_name(pid, uid, data, user_name, package_name);
pthread_mutex_unlock(&account_mutex);
return account_list;
}
-int _account_update_sync_status_by_id(int account_db_id, const int sync_status)
+int _account_update_sync_status_by_id(int uid, int account_db_id, const int sync_status)
{
int error_code = ACCOUNT_ERROR_NONE;
account_stmt hstmt = NULL;
return NULL;
}
-int _account_delete(int pid, int account_id)
+int _account_delete(int pid, int uid, int account_id)
{
int error_code = ACCOUNT_ERROR_NONE;
account_stmt hstmt = NULL;
}
ACCOUNT_DEBUG( "DELETE:account_id[%d],current_appid[%s]package_name[%s]", account_id, current_appid, package_name);
- error_code = _account_check_appid_group_with_package_name(current_appid, package_name);
+ error_code = _account_check_appid_group_with_package_name(uid, current_appid, package_name);
_ACCOUNT_FREE(current_appid);
_ACCOUNT_FREE(package_name);
return ACCOUNT_ERROR_NONE;
}
-int _account_delete_from_db_by_user_name(int pid, const char *user_name, const char *package_name)
+int _account_delete_from_db_by_user_name(int pid, int uid, const char *user_name, const char *package_name)
{
_INFO("[%s][%s]", user_name, package_name);
ACCOUNT_DEBUG( "DELETE:user_name[%s],current_appid[%s], package_name[%s]", user_name, current_appid, package_name_temp);
- error_code = _account_check_appid_group_with_package_name(current_appid, package_name_temp);
+ error_code = _account_check_appid_group_with_package_name(uid, current_appid, package_name_temp);
_ACCOUNT_FREE(current_appid);
_ACCOUNT_FREE(package_name_temp);
return error_code;
}
-int _account_delete_from_db_by_package_name(int pid, const char *package_name, gboolean permission)
+int _account_delete_from_db_by_package_name(int pid, int uid, const char *package_name, gboolean permission)
{
_INFO("_account_delete_from_db_by_package_name");
int error_code = ACCOUNT_ERROR_NONE;
ACCOUNT_DEBUG( "DELETE: current_appid[%s], package_name[%s]", current_appid, package_name_temp);
- error_code = _account_check_appid_group_with_package_name(current_appid, package_name_temp);
+ error_code = _account_check_appid_group_with_package_name(uid, current_appid, package_name_temp);
_ACCOUNT_FREE(current_appid);
_ACCOUNT_FREE(package_name_temp);
return _check_privilege(invocation, _PRIVILEGE_ACCOUNT_WRITE);
}
-gboolean account_manager_account_add(AccountManager *obj, GDBusMethodInvocation *invocation, GVariant* account_data, gpointer user_data)
+gboolean account_manager_account_add(AccountManager *obj, GDBusMethodInvocation *invocation, GVariant* account_data, gint uid, gpointer user_data)
{
_INFO("account_manager_account_add start");
int db_id = -1;
goto RETURN;
}
- return_code = _account_insert_to_db(account, pid, &db_id);
+ return_code = _account_insert_to_db(account, pid, (int)uid, &db_id);
if (return_code != ACCOUNT_ERROR_NONE)
{
gboolean account_manager_account_delete_from_db_by_id(AccountManager *object,
GDBusMethodInvocation *invocation,
- gint account_db_id)
+ gint account_db_id,
+ gint uid)
{
_INFO("account_manager_account_delete_from_db_by_id start");
}
_INFO("before _account_delete");
- return_code = _account_delete(pid, account_db_id);
+ return_code = _account_delete(pid, uid, account_db_id);
_INFO("after _account_delete=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)
gboolean account_manager_account_delete_from_db_by_user_name(AccountManager *object,
GDBusMethodInvocation *invocation,
const gchar *user_name,
- const gchar *package_name)
+ const gchar *package_name,
+ gint uid)
{
_INFO("account_manager_account_delete_from_db_by_user_name start");
}
_INFO("before _account_delete_from_db_by_user_name");
- return_code = _account_delete_from_db_by_user_name(pid, user_name, package_name);
+ return_code = _account_delete_from_db_by_user_name(pid, uid, user_name, package_name);
_INFO("after _account_delete_from_db_by_user_name=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)
gboolean account_manager_account_delete_from_db_by_package_name(AccountManager *object,
GDBusMethodInvocation *invocation,
- const gchar *package_name, gboolean permission)
+ const gchar *package_name,
+ gboolean permission,
+ gint uid)
{
_INFO("account_manager_account_delete_from_db_by_package_name start");
int return_code = ACCOUNT_ERROR_NONE;
}
_INFO("before account_delete_from_db_by_package_name");
- return_code = _account_delete_from_db_by_package_name(pid, package_name, permission);
+ return_code = _account_delete_from_db_by_package_name(pid, uid, package_name, permission);
_INFO("after account_delete_from_db_by_package_name=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)
gboolean account_manager_account_update_to_db_by_id(AccountManager *object,
GDBusMethodInvocation *invocation,
GVariant *account_data,
- gint account_id)
+ gint account_id,
+ gint uid)
{
_INFO("account_manager_account_update_to_db_by_id start");
account_s* account = NULL;
}
_INFO("before account_update_to_db_by_id");
- return_code = _account_update_to_db_by_id(pid, account, account_id);
+ return_code = _account_update_to_db_by_id(pid, uid, account, account_id);
_INFO("after account_update_to_db_by_id=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)
GDBusMethodInvocation *invocation,
GVariant *account_data,
const gchar *user_name,
- const gchar *package_name)
+ const gchar *package_name,
+ gint uid)
{
_INFO("account_manager_handle_account_update_to_db_by_user_name start");
account_s* account = NULL;
}
_INFO("before account_update_to_db_by_id");
- return_code = _account_update_to_db_by_user_name(pid, account, user_name, package_name);
+ return_code = _account_update_to_db_by_user_name(pid, uid, account, user_name, package_name);
_INFO("after account_update_to_db_by_id=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)
gboolean account_manager_handle_account_update_sync_status_by_id(AccountManager *object,
GDBusMethodInvocation *invocation,
const int account_db_id,
- const int sync_status)
+ const int sync_status,
+ gint uid)
{
_INFO("account_manager_handle_account_update_sync_status_by_id start");
guint pid = _get_client_pid(invocation);
}
_INFO("before _account_update_sync_status_by_id");
- return_code = _account_update_sync_status_by_id(account_db_id, sync_status);
+ return_code = _account_update_sync_status_by_id(uid, account_db_id, sync_status);
_INFO("after _account_update_sync_status_by_id=[%d]", return_code);
if (return_code != ACCOUNT_ERROR_NONE)