From c86dc4ab30fda58338c4fe8a582c4f3a1c1d3491 Mon Sep 17 00:00:00 2001 From: Byeonggon Lee Date: Fri, 19 Apr 2019 17:29:11 +0900 Subject: [PATCH 1/3] Fix docker --- Dockerfile | 3 ++- entrypoint.sh | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100755 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index bc7a9dfa..247221a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,4 +3,5 @@ MAINTAINER leaf corcoran WORKDIR /site/luarocks.org ADD . . -ENTRYPOINT ./ci.sh +RUN ./ci.sh +ENTRYPOINT ./entrypoint.sh diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 00000000..094d5d9d --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,3 @@ +eval $(luarocks --lua-version=5.1 path) +su postgres -c '/usr/bin/pg_ctl -s -D /var/lib/postgres/data start -w -t 120' +lapis server From 70126a5283271f307a4a168a5c9f44458a5c8f2b Mon Sep 17 00:00:00 2001 From: Byeonggon Lee Date: Fri, 19 Apr 2019 19:29:32 +0900 Subject: [PATCH 2/3] Fix travis --- .travis.yml | 4 +--- Dockerfile.test | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 Dockerfile.test diff --git a/.travis.yml b/.travis.yml index 3c2ee3ef..2a44b9c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,7 @@ services: - docker install: - - docker build -t luarocks-test . + - docker build -f Dockerfile.test -t luarocks-test . script: - docker run luarocks-test - - diff --git a/Dockerfile.test b/Dockerfile.test new file mode 100644 index 00000000..bc7a9dfa --- /dev/null +++ b/Dockerfile.test @@ -0,0 +1,6 @@ +FROM leafo/lapis-archlinux-itchio:latest +MAINTAINER leaf corcoran + +WORKDIR /site/luarocks.org +ADD . . +ENTRYPOINT ./ci.sh From 705b19c1260aeac21df781ae18c90f26af20844d Mon Sep 17 00:00:00 2001 From: Byeonggon Lee Date: Thu, 13 Feb 2020 17:11:57 +0000 Subject: [PATCH 3/3] Add email edit --- applications/user.moon | 13 +++++++++++++ models/user_activity_logs.moon | 7 ++----- models/user_sessions.moon | 1 + models/users.moon | 11 +++++++++++ views/user_settings/profile.moon | 11 +++++++++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/applications/user.moon b/applications/user.moon index 7cd0fd9b..cad4812f 100644 --- a/applications/user.moon +++ b/applications/user.moon @@ -293,6 +293,7 @@ class MoonRocksUser extends lapis.Application assert_valid @params, { {"profile", type: "table"} + {"email", type: "string"} } profile = trim_filter @params.profile, @@ -312,6 +313,18 @@ class MoonRocksUser extends lapis.Application data: difference } + if @user.email != @params.email + old_email = @user.email + @user\update_email @params.email + import UserActivityLogs from require "models" + + UserActivityLogs\create_from_request @, { + user_id: @user.id + source: "web" + action: "account.update_email" + data: {old_email, @user.email} + } + redirect_to: @url_for "user_settings.profile" } diff --git a/models/user_activity_logs.moon b/models/user_activity_logs.moon index bef57865..c4df459e 100644 --- a/models/user_activity_logs.moon +++ b/models/user_activity_logs.moon @@ -62,13 +62,10 @@ class UserActivityLogs extends Model table.insert parts, "set #{k}" table.concat parts, ", " + when "account.update_email" + "updated email from #{@data[1]} to #{@data[2]}" when "account.update_password_attempt" @data.reason when "account.create_api_key", "account.revoke_api_key" if @data.key @data.key\sub(1, 10) .. "…" - - - - - diff --git a/models/user_sessions.moon b/models/user_sessions.moon index eb1c2e31..f6bf442c 100644 --- a/models/user_sessions.moon +++ b/models/user_sessions.moon @@ -13,6 +13,7 @@ class UserSessions extends Model admin: 4 login_github: 5 register_github: 6 + update_email: 7 } @create_from_request: (req, user, more_params) => diff --git a/models/users.moon b/models/users.moon index c4c04ff2..d5e93e86 100644 --- a/models/users.moon +++ b/models/users.moon @@ -110,6 +110,17 @@ class Users extends Model order by similarity(username, ?) desc ]], query, query, per_page: 50 + update_email: (email, r) => + dupemail = Users\find [db.raw "lower(email)"]: email\lower! + return nil, "duplicate email" unless dupemail == nil + + @update email: email + if r + if r.current_user_session + r.current_user_session\revoke! + @write_session r, type: "update_email" + return true + update_password: (pass, r) => @update encrypted_password: bcrypt.digest pass, bcrypt.salt 5 if r diff --git a/views/user_settings/profile.moon b/views/user_settings/profile.moon index d287af5e..511afd14 100644 --- a/views/user_settings/profile.moon +++ b/views/user_settings/profile.moon @@ -5,6 +5,17 @@ class UserSettingsProfile extends require "widgets.user_settings_page" @csrf_input! data = @user\get_data! + div class: "row", -> + label -> + div class: "label", "Your email" + + input { + type: "text" + class: "medium_input" + name: "email" + value: @user.email + } + div class: "row", -> label -> div class: "label", "Your website"