aboutsummaryrefslogtreecommitdiff
path: root/src/guff.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/guff.cr')
-rw-r--r--src/guff.cr46
1 files changed, 38 insertions, 8 deletions
diff --git a/src/guff.cr b/src/guff.cr
index 6b842f8..5524aca 100644
--- a/src/guff.cr
+++ b/src/guff.cr
@@ -533,7 +533,7 @@ module Guff
# add search filter
filters << "a.post_id IN (
SELECT rowid
- FROM posts_fts
+ FROM posts_fts
WHERE posts_fts MATCH ?
)"
@@ -1051,6 +1051,21 @@ module Guff
ORDER BY LOWER(a.name)
",
+
+ get: "
+ SELECT a.user_id,
+ a.name,
+ a.email,
+ a.is_active,
+ b.role,
+ b.name AS role_name
+
+ FROM users a
+ JOIN roles b
+ ON (b.role_id = a.role_id)
+
+ WHERE a.user_id = ?
+ ",
}
def login(
@@ -1151,6 +1166,16 @@ module Guff
rows
end
+
+ def get(user_id : Int64)
+ row = @context.dbs.ro.row(SQL[:get], [user_id.to_s])
+ raise "unknown user: #{user_id}" unless row
+
+ row.reduce({} of String => String) do |r, k, v|
+ r[k] = v.to_s
+ r
+ end
+ end
end
# TODO: handle session expiration
@@ -1686,12 +1711,17 @@ module Guff
{ "user_id": user_id }
end
+ def do_user_get(params : HTTP::Params)
+ @context.models.user.get(params["user_id"].to_i64)
+ end
+
+
def do_user_set(params : HTTP::Params)
@context.models.user.set(
user_id: params["user_id"].to_i64,
name: params["name"]?,
email: params["email"]?,
- password: params["password"]?,
+ password: (params["password"]? && params["password"].size > 0) ? params["password"] : nil,
active: params["active"]? ? (params["active"] == "t") : nil,
role: params["role"]?,
)
@@ -1747,7 +1777,7 @@ module Guff
def self.icon(id : String?)
if id && id.size > 0
ICON_TEMPLATE % [HTML.escape(id.not_nil!)]
- else
+ else
""
end
end
@@ -1795,7 +1825,7 @@ module Guff
String.build do |io|
@items.each do |item|
io << ItemView.new(
- context: @context,
+ context: @context,
active: @default == item[:id]?,
item: item
).to_s
@@ -1848,7 +1878,7 @@ module Guff
)
Dropdown::MenuView.new(
context: @context,
- id: id,
+ id: id,
name: name,
text: text,
icon: icon,
@@ -2016,7 +2046,7 @@ module Guff
private def authors_menu_items
@context.models.user.get_users.map do |row|
- {
+ {
id: row["user_id"],
name: row["name"],
text: "Show author \"%s\"." % [row["name"]],
@@ -2026,7 +2056,7 @@ module Guff
private def sites_menu_items
@context.models.site.get_sites.map do |row|
- {
+ {
id: row["site_id"],
name: row["name"],
text: "Show site \"%s\"." % [row["name"]],
@@ -2036,7 +2066,7 @@ module Guff
private def states_menu_items
@context.models.state.get_states.map do |row|
- {
+ {
id: row["state"],
name: row["name"],
icon: row["icon"],