diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-09 00:36:13 +0100 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-09 00:36:13 +0100 |
| commit | e469b29ef28cb6e257cb78787186e75c52050558 (patch) | |
| tree | 57bafca5624ba0e40fd149bf0ef02884916f4a1a /database/sqlite | |
| parent | e4bd72e98083987d26cd6570786fa30fb984ef57 (diff) | |
| download | eurephia-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.c | 33 |
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: |
