diff --git a/qswiki.cpp b/qswiki.cpp index c14a584..b287a77 100644 --- a/qswiki.cpp +++ b/qswiki.cpp @@ -85,12 +85,23 @@ int main(int argc, char **argv) logstream.open(config.logfile, std::fstream::out | std::fstream::app); Logger::setStream(&logstream); - User anon; - anon.login = config.anon_username; - anon.permissions = config.anon_permissions; - User::setAnon(anon); - auto database = createDatabase(config); + + // TODO: quite ugly, anon-handling must be rethought + auto userdao = database->createUserDao(); + std::optional anon = userdao->find(config.anon_username); + if(!anon) + { + throw std::runtime_error("No such anon user in database"); + } + if(!anon->enabled) + { + throw std::runtime_error("Anon user cannot be enabled"); + } + anon->permissions = config.anon_permissions; + userdao->save(anon.value()); + User::setAnon(anon.value()); + Template siteTemplate{config}; UrlProvider urlprovider{config};