summaryrefslogtreecommitdiffstats
path: root/database/sqlite
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-09 00:36:13 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-09 00:36:13 +0100
commite469b29ef28cb6e257cb78787186e75c52050558 (patch)
tree57bafca5624ba0e40fd149bf0ef02884916f4a1a /database/sqlite
parente4bd72e98083987d26cd6570786fa30fb984ef57 (diff)
downloadeurephia-e469b29ef28cb6e257cb78787186e75c52050558.tar.gz
eurephia-e469b29ef28cb6e257cb78787186e75c52050558.tar.xz
eurephia-e469b29ef28cb6e257cb78787186e75c52050558.zip
eDBadminGetUserList(...): Added certificate info into the eurephiaUSERINFO struct
Diffstat (limited to 'database/sqlite')
-rw-r--r--database/sqlite/administration.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c
index 2591b43..d44d9a0 100644
--- a/database/sqlite/administration.c
+++ b/database/sqlite/administration.c
@@ -407,7 +407,7 @@ eurephiaUSERLIST *eDBadminGetUserList(eurephiaCTX *ctx, const char *sortkeys) {
// on these values. If a user is found, the *user struct will be updated with the user found. On success
// the function returns 1.
int eDBadminGetUserInfo(eurephiaCTX *ctx, eurephiaUSERINFO *user) {
- dbresult *uinf = NULL;
+ dbresult *uinf = NULL, *certinf = NULL;
eDBfieldMap *uinfo_map = NULL;
uinfo_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, user);
@@ -440,8 +440,37 @@ int eDBadminGetUserInfo(eurephiaCTX *ctx, eurephiaUSERINFO *user) {
user->deactivated = strdup_nullsafe(sqlite_get_value(uinf, 0, 2));
user->last_accessed = strdup_nullsafe(sqlite_get_value(uinf, 0, 3));
user->uid = atoi_nullsafe(sqlite_get_value(uinf, 0, 4));
-
sqlite_free_results(uinf);
+
+ // Extract certificate info --- FIXME: Come up with clever idea to also add access profile
+ certinf = sqlite_query(ctx,
+ "SELECT depth, digest, common_name, organisation, email, c.registered, "
+ " c.certid" //, access_descr"
+ " FROM openvpn_certificates c"
+ " LEFT JOIN openvpn_usercerts uc ON (c.certid = uc.certid)"
+ // " LEFT JOIN openvpn_accesses a ON (uc.accessprofile = a.accessprofile)"
+ " WHERE uid = %i ORDER BY c.certid DESC", user->uid);
+ if( (certinf != NULL) && (sqlite_get_numtuples(certinf) > 0) ) {
+ eurephiaCERTINFO *rec = NULL;
+ int i;
+
+ user->certlist = eAdminCreateCERTLIST();
+
+ for( i = 0; i < sqlite_get_numtuples(certinf); i++ ) {
+ rec = eAdminPopulateCERTINFO(
+ atoi_nullsafe(sqlite_get_value(certinf, i, 6)),
+ atoi_nullsafe(sqlite_get_value(certinf, i, 0)),
+ sqlite_get_value(certinf, i, 1),
+ sqlite_get_value(certinf, i, 2),
+ sqlite_get_value(certinf, i, 3),
+ sqlite_get_value(certinf, i, 4),
+ sqlite_get_value(certinf, i, 5));
+ eAdminInsertCERTINFO(user->certlist, rec);
+ }
+ sqlite_free_results(certinf);
+ } else {
+ user->certlist = NULL;
+ }
return 1;
default: