Сравнить коммиты
2 Коммитов
c4072a7e95
...
b59e81a41d
Автор | SHA1 | Дата | |
---|---|---|---|
b59e81a41d | |||
f002969cc1 |
25
cli.cpp
25
cli.cpp
@ -138,6 +138,31 @@ std::pair<bool, std::string> CLIHandler::user_show(const std::vector<std::string
|
|||||||
return {false, "User not found"};
|
return {false, "User not found"};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::pair<bool, std::string> CLIHandler::page_list(const std::vector<std::string> &args)
|
||||||
|
{
|
||||||
|
auto pageDao = this->db->createPageDao();
|
||||||
|
QueryOption o;
|
||||||
|
auto result = pageDao->getPageList(o);
|
||||||
|
std::stringstream stream;
|
||||||
|
for(std::string pagename : result)
|
||||||
|
{
|
||||||
|
Page p = pageDao->find(pagename).value();
|
||||||
|
stream << p.name << " " << p.pageid << " " << std::string(p.listed ? "listed" : "unlisted") << std::endl;
|
||||||
|
}
|
||||||
|
return {true, stream.str()};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<bool, std::string> CLIHandler::pageperms_set_permissions(const std::vector<std::string> &args)
|
||||||
|
{
|
||||||
|
std::string page = args.at(0);
|
||||||
|
std::string username = args.at(1);
|
||||||
|
std::string perms = args.at(2);
|
||||||
|
|
||||||
|
auto permissionsDao = this->db->createPermissionsDao();
|
||||||
|
permissionsDao->save(page, username, Permissions{perms});
|
||||||
|
return {true, ""};
|
||||||
|
}
|
||||||
|
|
||||||
std::pair<bool, std::string> CLIHandler::attach(const std::vector<std::string> &args)
|
std::pair<bool, std::string> CLIHandler::attach(const std::vector<std::string> &args)
|
||||||
{
|
{
|
||||||
/* TODO: consider authentication */
|
/* TODO: consider authentication */
|
||||||
|
16
cli.h
16
cli.h
@ -30,6 +30,8 @@ class CLIHandler
|
|||||||
std::pair<bool, std::string> user_set_perms(const std::vector<std::string> &args);
|
std::pair<bool, std::string> user_set_perms(const std::vector<std::string> &args);
|
||||||
std::pair<bool, std::string> user_list(const std::vector<std::string> &args);
|
std::pair<bool, std::string> user_list(const std::vector<std::string> &args);
|
||||||
std::pair<bool, std::string> user_show(const std::vector<std::string> &args);
|
std::pair<bool, std::string> user_show(const std::vector<std::string> &args);
|
||||||
|
std::pair<bool, std::string> page_list(const std::vector<std::string> &args);
|
||||||
|
std::pair<bool, std::string> pageperms_set_permissions(const std::vector<std::string> &args);
|
||||||
std::pair<bool, std::string> version(const std::vector<std::string> &args);
|
std::pair<bool, std::string> version(const std::vector<std::string> &args);
|
||||||
|
|
||||||
std::vector<struct cmd> cmds{
|
std::vector<struct cmd> cmds{
|
||||||
@ -43,6 +45,20 @@ class CLIHandler
|
|||||||
{"list", "- lists users", 0, {}, &CLIHandler::user_list},
|
{"list", "- lists users", 0, {}, &CLIHandler::user_list},
|
||||||
{"show", "[user] - show detailed information about user", 1, {}, &CLIHandler::user_show}}},
|
{"show", "[user] - show detailed information about user", 1, {}, &CLIHandler::user_show}}},
|
||||||
&CLIHandler::cli_help},
|
&CLIHandler::cli_help},
|
||||||
|
{"page",
|
||||||
|
"operation on pages",
|
||||||
|
1,
|
||||||
|
{{{"list", "- lists existing pages", 0, {}, &CLIHandler::page_list}}},
|
||||||
|
&CLIHandler::cli_help},
|
||||||
|
{"pageperms",
|
||||||
|
"set permissions on pages",
|
||||||
|
1,
|
||||||
|
{{{"set",
|
||||||
|
"- [page] [username] [permissions] set permisisons on page",
|
||||||
|
3,
|
||||||
|
{},
|
||||||
|
&CLIHandler::pageperms_set_permissions}}},
|
||||||
|
&CLIHandler::cli_help},
|
||||||
{"exit",
|
{"exit",
|
||||||
"exit cli",
|
"exit cli",
|
||||||
0,
|
0,
|
||||||
|
@ -7,6 +7,7 @@ class PermissionsDao
|
|||||||
public:
|
public:
|
||||||
PermissionsDao();
|
PermissionsDao();
|
||||||
virtual std::optional<Permissions> find(std::string pagename, std::string username) = 0;
|
virtual std::optional<Permissions> find(std::string pagename, std::string username) = 0;
|
||||||
|
virtual void save(std::string pagename, std::string username, Permissions perms) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PERMISSIONSDAO_H
|
#endif // PERMISSIONSDAO_H
|
||||||
|
@ -41,3 +41,21 @@ std::optional<Permissions> PermissionsDaoSqlite::find(std::string pagename, std:
|
|||||||
|
|
||||||
return Permissions{permissions};
|
return Permissions{permissions};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PermissionsDaoSqlite::save(std::string pagename, std::string username, Permissions perms)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto query =
|
||||||
|
*db
|
||||||
|
<< "INSERT OR REPLACE INTO permissions (id, permissions, userid, page) VALUES((SELECT id FROM permissions "
|
||||||
|
"WHERE page = (SELECT id FROM page WHERE name = ?) AND userid = (SELECT id FROM user WHERE username = "
|
||||||
|
"?)), ?, (SELECT id FROM user WHERE username = ?), (SELECT id FROM page WHERE name = ?))";
|
||||||
|
query << pagename << username << perms.getPermissions() << username << pagename;
|
||||||
|
query.execute();
|
||||||
|
}
|
||||||
|
catch(const sqlite::errors::no_rows &e)
|
||||||
|
{
|
||||||
|
throwFrom(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -9,6 +9,7 @@ class PermissionsDaoSqlite : public PermissionsDao, protected SqliteDao
|
|||||||
PermissionsDaoSqlite();
|
PermissionsDaoSqlite();
|
||||||
|
|
||||||
std::optional<Permissions> find(std::string pagename, std::string username) override;
|
std::optional<Permissions> find(std::string pagename, std::string username) override;
|
||||||
|
virtual void save(std::string pagename, std::string username, Permissions perms) override;
|
||||||
using SqliteDao::SqliteDao;
|
using SqliteDao::SqliteDao;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user