12367 Commits (e7fd186118d5ec1167b302208bdcd81392d2d021)

Author SHA1 Message Date
Julian Lam f0d192fbfd feat: autocomplete for activate/reset
useless features™️
3 years ago
Julian Lam 5b42b6b369
API route for returning tracked analytics keys (#10019)
* feat: track metrics saved by NodeBB (and assoc. plugins), #9949

* feat: route to retrieve analytics keys, closes #9949
3 years ago
Julian Lam 449366ca83 fix: consolidate plugin reset logic 3 years ago
Barış Soner Uşaklı 9245f71a66 fix: search crash 3 years ago
Barış Soner Uşaklı fb363957d1 refactor: tab rules 3 years ago
Barış Soner Uşaklı c26870d227 feat: #10008, add history entry for note deletion 3 years ago
Barış Soner Uşaklı 697dd37670 refactor: change category feed so it is not updated on every reply
allow cid query param for recent/top/popular feeds
3 years ago
Barış Soner Uşaklı d5bfd51267 fix: #10010, handle reverse sorting for topic events
dont add events to dom if sort is most votes
if sorting is reverse add new events after the main post or at the top instead of bottom
3 years ago
Barış Soner Uşaklı e368feef51 refactor: dont expost entire res._locals to client side 3 years ago
Barış Soner Uşaklı 190532b3b4 refactor: shorter meta.settings.get 3 years ago
Barış Soner Uşaklı 51cbeccb08 refactor: clone settings before returning
prevents plugins from mistakenly modifying saved settings in cache
3 years ago
Barış Soner Uşaklı 27c05448e1 refactor: remove another async.series 3 years ago
Barış Soner Uşaklı 0532c1b2a1 feat: #9957, don't remove existing fields form config.json 3 years ago
Barış Soner Uşaklı 047f031dd7 fix: #10006, dont allow new rooms or adding to a room if target is blocked 3 years ago
Barış Soner Uşaklı f729e51921 refactor: clone before returning 3 years ago
Barış Soner Uşaklı 258f368e32 refactor: add filter:topic.getPosts
this hook only fires when loading the posts of a topic cold load + infinite scroll
do not remove posts if they have index =-1
use topics.getTopicPosts instead of getMainPostAndReplies
3 years ago
Barış Soner Uşaklı 8379c11b22 refactor: setObjectBulk to match sortedSetAddBulk 3 years ago
Baris Usakli d412ba4411 perf: closes #9994, bulk methods for settings 3 years ago
Julian Lam 09e0c6d503 feat: add feature flag to disable verification emails, closes #9996 3 years ago
Barış Soner Uşaklı d196409580 refactor: remove more async.eachSeries/mapSeries 3 years ago
Barış Soner Uşaklı 8750ee04a6 refactor: make a single call to set widgets per template 3 years ago
Barış Soner Uşaklı 80f9963bed refactor: remove jshint, remove async.parallel 3 years ago
Barış Soner Uşaklı 61d1f56500 test: socket.emit doesnt exist in tests 3 years ago
Julian Lam 1719bff89c feat: use auto-generated meta and link tags in ACP, closes #9991 3 years ago
Barış Soner Uşaklı 8b4510cc70 refactor: deprecate app.logout
use logout module instead
move header related code out of app.js
3 years ago
Barış Soner Uşaklı 1a9b15989b refactor: move search functions from app.js to search module
deprecate:
app.handleSearch, use search.init(options) instead
app.enableTopicSearch, use search.enableQuickSearch(options) instead
app.prepareSearch, use search.showAndFocusInput() instead
3 years ago
Barış Soner Uşaklı 518552543d refactor: move warnings/messages out of app.js 3 years ago
Julian Lam c1ac291284 fix: ability to enumerate email via updateProfile method 3 years ago
Julian Lam b912a564e3 fix: accidentally not clearing email when said email is confirmed for a different uid 3 years ago
Barış Soner Uşaklı 4b738c8cd3 refactor: cleanup info, better cpu usage % 3 years ago
Barış Soner Uşaklı 890bf03fcc refactor: acp only uses 3 modes and a single theme
so only copy 7 files to build folder instead of 400+
3 years ago
Barış Soner Uşaklı 28dd31a8e7 fix: #9976 3 years ago
Barış Soner Uşaklı 9bfb6c7281 fix: #9976, handle array or object 3 years ago
Barış Soner Uşaklı 66e7cdac7a fix: #9973, ignore if assigning to same parent 3 years ago
Barış Soner Uşaklı d27c9696e3
feat: add node 16 (#9847)
* feat: add node 16

* fix: check errors in fork

* test: add use-spawn

* test: another test

* Revert "test: another test"

This reverts commit 606efe26fe1decd5d9269d63d5b649441ba2203b.

* test: another test

* fix: lint

* fix: remove spawn-wrap

* test: comment out plugin installs

* fix: lint

* test: uncomment all tests except npm i

* fix: lint

* test: bring back tests

* test: remove leftover override
3 years ago
Barış Soner Uşaklı 67cb249122 fix: #9972 3 years ago
Barış Soner Uşaklı 2e623dd271 feat: #9967, allow dropdowns in navigation 3 years ago
Barış Soner Uşaklı b916e42f40 feat: show number of events per type in acp 3 years ago
Barış Soner Uşaklı 8c67031609 feat: show posts previews if enabled on mouse over 3 years ago
Barış Soner Uşaklı 3d611ab70e fix: events for just topic with main post 3 years ago
Barış Soner Uşaklı 89399c0ed5 fix: #9954, get next post timestamp
fixes topic events being inserted in after first page but at the wrong spot
3 years ago
Julian Lam 485b6ced1d fix: broken post uploads due to 6a976a9db0 3 years ago
Julian Lam 0ee85d5a0b fix: #9950, rename account export routes to remove `uid/` prefix 3 years ago
Julian Lam 60352eca54
fix: double invocation of authenticateRequest 3 years ago
Julian Lam 6a976a9db0 fix: #9945, call authenticateRequest middleware for mount points in /api 3 years ago
Barış Soner Uşaklı bc4b19b4d7 fix: typo in flags 3 years ago
Barış Soner Uşaklı 8f08d9cac0 fix: handle undefined data.query 3 years ago
Julian Lam 28efcb59cb chore: remove .opacity() mixin as it is supported cross-browser 3 years ago
Barış Soner Uşaklı c428ba80aa refactor: wider value field 3 years ago
Barış Soner Uşaklı c7e078d495 refactor: dont save partial searches 3 years ago
Julian Lam 80ea12c1c1 feat: new ACP option `emailPrompt`
... which allows administrators to disable the client-side prompt to
encourage users to enter or confirm their email addresses
3 years ago
Barış Soner Uşaklı 64192731a0 refactor: use search api for topic search 3 years ago
Barış Soner Uşaklı 6cfaea06f0 fix: undefined query showing in searches 3 years ago
Barış Soner Uşaklı 0926ae6ecf fix: api session revoke test 3 years ago
Barış Soner Uşaklı da64810a4a fix: crash 3 years ago
Barış Soner Uşaklı a528790615 refactor: typo 3 years ago
Barış Soner Uşaklı ee8e048015 fix: move record to controller 3 years ago
Barış Soner Uşaklı f4cf482a87 feat: show popular searches 3 years ago
Barış Soner Uşaklı 63572c23ce fix: profile edit fields showing translated values 3 years ago
Barış Soner Uşaklı 719cfc0d57 breaking: disable javascript in custom less tab 3 years ago
Barış Soner Uşaklı 04dab1d550 fix: token verify 3 years ago
Barış Soner Uşaklı 1783f918bc fix: guard against prototype pollution 3 years ago
Barış Soner Uşaklı c8b2fc46dc fix: translator path traversal 3 years ago
Barış Soner Uşaklı e62948f73d fix: there is no alltime digest, fixes translation in test email
there is no digest.title.alltime
3 years ago
Julian Lam 506c34a84d refactor: simplified utilities API > login rout
Removed continueLogin override in favour of a simpler `redirectAfterLogin` override
Use passport to authenticate username and password instead of duplicated logic.
3 years ago
Julian Lam 6b4f35c2fa feat: new plugin hook to allow plugins to reject email address on new registration or email change 3 years ago
Julian Lam 806a1e50d2 feat: utilities login API route now starts an actual login session, if requested 3 years ago
Barış Soner Uşaklı b91ae0880d feat: add method name to deprecation message 3 years ago
Barış Soner Uşaklı 1d62bd6d7b refactor: log error as well 3 years ago
Barış Soner Uşaklı 73a9ca09c9 refactor: catch errors from buildHeader in error handler 🔥 3 years ago
Barış Soner Uşaklı d4da98404c refactor: add missing helpers.tryRoute 3 years ago
Barış Soner Uşaklı 998b9e7918 fix: minification regression 3 years ago
Julian Lam d22b076b2e feat: additional quality options for jpeg uploads, added quality and compression settings for png uploads 3 years ago
Barış Soner Uşaklı ee0282f5aa refactor: shorter middleware 3 years ago
Barış Soner Uşaklı b2429ef00e refactor: meta/minifier use async/await 3 years ago
Barış Soner Uşaklı 90b81262fa refactor: remove unused var 3 years ago
Barış Soner Uşaklı 9cb4de50a2 fix: biweekly digest #8053 3 years ago
Julian Lam 44687394dc fix: restore plugin upgrade checking logic
unintended regression from ac86937c88
3 years ago
Barış Soner Uşaklı 8e319a9b25 refactor: catch errors from digest 3 years ago
Barış Soner Uşaklı f7967bdf68 feat: #8053, biweekly digest option 3 years ago
Barış Soner Uşaklı 6da3239230 refactor: less.render already returns promise
rename callback to next to match other controllers
3 years ago
Barış Soner Uşaklı c70eaa0a34 refactor: prompt.get already returns promise 3 years ago
Barış Soner Uşaklı 38756a0c34 refactor: no more 🐮 3 years ago
Barış Soner Uşaklı 4333d217a1 fix: #9917, show topics as unread for guests 3 years ago
Barış Soner Uşaklı a9bc6a0962 refactor: allow array of uids for blocks.is/list
remove async.filter
use cacheCreate
3 years ago
Barış Soner Uşaklı 9e0ce0272c fix: don't overwrite reloadRequired with false
1. meta.settings.set('name', values); // reloadRequired is set to true
2. meta.settings.set('otherName', values, false); // reloadRequired was set to false, even though it should stay true until restart due to step 1
3 years ago
Barış Soner Uşaklı 8e6bd7e913 refactor: show full url on error log 3 years ago
Barış Soner Uşaklı 1feb111ade
perf: dont fs.open if plugin doesnt have language namespace (#9893)
closes #9892
3 years ago
gasoved b0a24d6dd5
refactor: var to const and let (#9885)
* refactor: var to const and let

* fix: missed global bootbox usage

* refactor: align with eslint expectations
3 years ago
Baris Usakli 997fb2b348 refactor: remove unused code 3 years ago
gasoved c1149d045c fix: better nomenclature 3 years ago
gasoved 3acaac4c7c
fix: html attributes (#9877)
* fix: some empty xml tag bodies

* fix: missing/wrong attributing of label tags

* fix: attribute fixes

* fix: misassociated label

* fix: missing alt attributes

* fix: some more missing associated labels
3 years ago
Barış Soner Uşaklı 6c25b9dbaa test: remove escape 3 years ago
Barış Soner Uşaklı 4f9717fb08 fix: escape thumbs, allow robots meta tag 3 years ago
Barış Soner Uşaklı 27e53b42f3 feat: use unread icon in mobile 3 years ago
Barış Soner Uşaklı 8ad9a103b3
fix: #9866, fire vote hooks after reputation changes (#9867) 3 years ago
Barış Soner Uşaklı a0df389021 fix: dont show decimails on auto approva minutes 3 years ago
Barış Soner Uşaklı a70c69fa83 fix: delete old topic tags 3 years ago
gasoved d1ff3d6298
feat: cli user management commands (#9848)
* feat: cli user management commands

* fix: consistent nomenclature
3 years ago
Barış Soner Uşaklı 5aea6c6aa1 feat: #9855, allow uid for post queue notifications 3 years ago
Barış Soner Uşaklı 4404e81991
fix: switch inf. scroll to xhr (#9854)
this fixes infinitescroll when url has custom query parameters
also fixes infinitescroll for plugins like QnA
fixes infinitescroll on tags page
deprecate topics.loadMoreSortedTopics
deprecate topics.loadMoreFromSet
3 years ago
Barış Soner Uşaklı e6a17a6349
Psql multikey (#9852)
* perf: convert promise.all to single query

* perf: single query for removeBulk

* perf: list
3 years ago
Barış Soner Uşaklı ea04aeded4
perf: convert promise.all to single query (#9851) 3 years ago
Julian Lam be43cd2597
Topic Linkbacks (#9825)
* feat: WIP topic linkbacks, + failing tests

* test: don't accidentally comment out all of the post tests

* fix: rename to "backlinks"

* feat: more stub code, more failing tests

* feat: backend methods and passing tests for topic backlinks

* test: uncomment test/posts.js again

* fix: missing quotation mark in topic event helper

* fix: superfluous usage of Promise.all

* test: fix broken test -- used hardcoded (and incorrect) url

* test: parseInt shenanigans
3 years ago
Barış Soner Uşaklı f24b630e1a feat: add userData to static:user.delete 3 years ago
Barış Soner Uşaklı 6399b42826 feat: closes #9845, sort by views 3 years ago
Peter Jaszkowiak ff84d6c52f
Add more chat hooks, replace toobig.jpg (#9843)
* feat: more hooks for messaging

for use in global chat plugin

* fix: replace toobig.jpg

toobig.png is a real 10000x10000 image
3 years ago
gasoved ac1b9692f2 fix: handle undefined returnTo on registerAbort 3 years ago
Barış Soner Uşaklı f8d4ec6ca6 fix: psql test 3 years ago
Barış Soner Uşaklı 3605ac811d fix: possible test fix for subfolder redirect 3 years ago
Julian Lam 58e0a366c8 fix: #9834, missing null email check on new registrations, added tests 3 years ago
Julian Lam a9645475fe feat: duplicate `requireEmailAddress` settings block to Settings > User 3 years ago
Barış Soner Uşaklı 07adb49e7f
feat: mongodb driver 4.x (#9832)
* feat: mongodb driver 4.x

* feat: up dbsearach
3 years ago
Barış Soner Uşaklı 6b34065f2a refactor: remove async.waterfall from remaining upgrade scripts 3 years ago
Barış Soner Uşaklı 89af00d1d5 fix: #9827, fix reward duplication 3 years ago
Barış Soner Uşaklı 30f387710c fix: #9822, use correct username/pwd 3 years ago
Barış Soner Uşaklı 2add84a568 fix: remove unused translator 3 years ago
Barış Soner Uşaklı 9f0e55ad3e fix: #9819, show same time info for ban 3 years ago
Barış Soner Uşaklı c437b33652 fix: crash 3 years ago
Barış Soner Uşaklı 15f9aaa6ee fix: remove caller from payload after hooks is done
only if it was added automatically
3 years ago
Julian Lam ce8ea6ea42 fix: bad uid reference 3 years ago
Julian Lam f194809f06 feat: move filter:topic.post hook to top of method 3 years ago
Julian Lam 7777812e62 fix: update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic)
/cc @antosik
3 years ago
Barış Soner Uşaklı c4fc7bf9b5 fix: #9818, fix totalTime calculation 3 years ago
psychobunny 1ed62aa82f fix: missing microdata in category data 3 years ago
Barış Soner Uşaklı c0a52924f1 fix: #9812, add topics:schedule 3 years ago
Barış Soner Uşaklı 18252fb9a8 refactor: no regex 3 years ago
Barış Soner Uşaklı 31a6d4b39a fix: for subfolders 3 years ago
Barış Soner Uşaklı 0236ea86ad fix: req.path doesn't have full url 3 years ago
Barış Soner Uşaklı 40c9fca918 fix: #9811, send bodyClass on 403
use helpers.formatApiResponse for /api/v3 routes only
3 years ago
Barış Soner Uşaklı 05ddd60c5e dont check empty emails in queue 3 years ago
Barış Soner Uşaklı 58ac55c16a refactor: remove async.waterfall 3 years ago
Barış Soner Uşaklı 222dccaf67 refactor: remove async.waterfall 3 years ago
Barış Soner Uşaklı f35a0f430a refactor: remove async.waterfall 3 years ago
Barış Soner Uşaklı ba3582b873 fix: xss on flags page via ban reason 3 years ago
Julian Lam 819917daf2 refactor: allow plugins to replace og:image, or specify additional og:image
/cc @antosik
3 years ago
Barış Soner Uşaklı 0c4b875e10 fix: redis batch 3 years ago
Barış Soner Uşaklı 3261edcc32 fix: redis processing batch+1 items every iteration 3 years ago
Barış Soner Uşaklı 8b576a3704 fix: #9560, don't save post diffs if content didn't change 3 years ago
Barış Soner Uşaklı 2657804c1f fix: #9790, fix sorting of more than one page of pinned topics 3 years ago
Barış Soner Uşaklı 3ecbb624d8
fix: privileges added by plugins (#9802)
* fix: privileges added by plugins

when copying a categories privileges, privileges added by plugins will be copied as well
when purging a category privileges added by plugins will be purged as well
show plugin privileges in privileges.<categories/admin/global>.get
show plugin privileges in privileges.<categories/admin/global>.userPrivileges
show plugin privileges in privileges.<categories/admin/global>.groupPrivileges

* fix: typo
3 years ago
Barış Soner Uşaklı 71ed50b9c1 fix: #9800, don't send all welcome test emails to test@example.org @julianlam 3 years ago
uplift 92d1ee31e4
Add authenticateRequest middleware (#9795)
* Add  authenticateRequest middleware

to Post routes

* Fix linting error
3 years ago
Barış Soner Uşaklı 397835a05a feat: allow removing multiple items from list 3 years ago
Barış Soner Uşaklı 7f48edc02a feat: add uid to filter:user.saveSettings 3 years ago
gasoved 84ff1152f7
feat: headers for global privs #9717 (#9762)
* feat: headers for global privs #9717

* fix: don't spoil headers to adminPrivs

Co-authored-by: Julian Lam <julian@nodebb.org>
3 years ago
Julian Lam 006fc700dd feat: add ACP option to require email address on new registration 3 years ago
Julian Lam 34afb74762 fix: browsers autocompleting smtp fields when they should not 3 years ago
psychobunny bf0c02a71e feat: a slightly less ugly rewards panel 3 years ago
psychobunny a7855c4cc4 fix: dashboard graph controls 3 years ago
Barış Soner Uşaklı 0ce4b87d85
fix: #9781 (#9782) 3 years ago
Julian Lam 856ba78a5f fix: replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit 3 years ago
Julian Lam cdaea61136 fix: handle missing uid in deprecated socket call 3 years ago
Julian Lam 0a41741b7e refactor: deprecate picture update socket call, new API routes for picture update 3 years ago
Julian Lam e33e046f15 fix: use privileges.users.canEdit for image upload priv check 3 years ago
Barış Soner Uşaklı a48bbdbfe3 fix: errors from registerComplete 4 years ago
Julian Lam 60de084475 fix: simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug)
Previous logic seemed to match the logic used in privileges.users.canEdit, except
the latter allows plugins to modify the value.
4 years ago
Barış Soner Uşaklı 1e2bda13d0 fix: lint 4 years ago
Barış Soner Uşaklı 488f0978a4 fix: manifest error 4 years ago
Barış Soner Uşaklı 72710b8040 fix: #9772, regression from 70a04bc105 4 years ago
Julian Lam dd4e66e22c fix: push back some deprecations, remove deprecated stuff scheduled for v1.18.0 4 years ago
Barış Soner Uşaklı 1f91a31327
Priv hook fix (#9775)
* fix: #9773, fire hooks properly for priv changes

* fix: admin/global group privs

dont allow invalid privs
4 years ago
Julian Lam 4ac701d747 fix: deprecate userData.showHidden as it is functionally equivalent to userData.canEdit 4 years ago
Barış Soner Uşaklı 6869920e06
fix: #9773, fire hooks properly for priv changes (#9774) 4 years ago
psychobunny 6afeac375b fix: automated tests are a good thing to have 4 years ago
psychobunny ae793b4a44 chore: found some hooks that don't play well docgen 4 years ago
gasoved 3df79683f5
feat: create folders in ACP uploads #9638 (#9750)
* feat: create folders in ACP uploads #9638

* fix: openapi

* test: missing tests

* fix: eslint

* fix: tests
4 years ago
gasoved 61f02f17d8
feat: column based view on wide priv. tables (#9699)
* feat: column based view on wide priv. tables

* fix: add group/user

* feat: copy buttons to work on visible privs

* feat: show what's being copied in modal

* feat: optional title and message for category selector modal
4 years ago
Barış Soner Uşaklı e59d357533
feat: als (#9749)
* feat: als

* fix: up test timeout

* fix: don't overwrite caller if it already exists

* fix: up test timeout for psql
4 years ago
SAES:RPG dd15065706
Fix [MONGODB DRIVER] Warning: bulk operation `remove` has been deprecated, please use `delete` (#9746)
Co-authored-by: Brophy <paul.brophy@bastage.net>
4 years ago
Barış Soner Uşaklı 0743554dd4 fix: pluginPaths 4 years ago
Barış Soner Uşaklı 13878e9f14 fix: #9730, show warning if plugin is active but not installed 4 years ago
Barış Soner Uşaklı c354cde347 fix: #9719, only apply to non https 4 years ago
Barış Soner Uşaklı 6659e95a4a
refactor: remove promisify from redis, ioredis supports promises nati… (#9728)
* refactor: remove promisify from redis, ioredis supports promises natively

* refactor: remove unused util
4 years ago
Barış Soner Uşaklı a288f51f42 fix: allow smaller than 5mins for admin relogin duration
setting the value to 1min in ACP wasn't working
4 years ago
Barış Soner Uşaklı 794bf01b21 feat: allow changing default search in 4 years ago
Barış Soner Uşaklı 9de64bf516 fix: #9698, pass along query params in redirect 4 years ago
Barış Soner Uşaklı 358ad74054 feat: closes #9684, allow event deletion
fix: topic events appearing before necro messages
feat: add move topic event
feat: add ability to delete specific topic events via events.purge
4 years ago
opliko a370c26f73 feat: re-add FontAwesome font for compatibility 4 years ago
opliko 093ac1c09a fix: remove unnecessary quote 4 years ago
opliko 41762e6603 feat: update to FontAwesome 5.15, resolve #6976 4 years ago
Barış Soner Uşaklı 8fb53252a8 refactor: get rid of async.waterfall/each 4 years ago
Barış Soner Uşaklı 42dbd40253 refactor: remove unused async 4 years ago
Barış Soner Uşaklı 6b6a7d4b8a refactor: remove waterfall 4 years ago
Opliko d509a307f0
Remove some deprecated/unnecessary code (#9688)
* refactor: remove mkdirp promisify

* refactor: remove old session deletion API route

* refactor: remove middleware.isAdmin

* refactor: remove templateValues.config.bootswatchSkin

* fix: unused dependencies
4 years ago
Barış Soner Uşaklı 0c81642997 fix: #9681, update posts in queue if target tid is merged 4 years ago
Julian Lam 4a521ea218 fix: email update interstitial to not error on empty email field (on new registration) 4 years ago
Julian Lam 70a04bc105 feat: removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors 4 years ago
Julian Lam 0e05cbe1f7 feat: show instructional modal after email change request 4 years ago
Julian Lam e95df2f066 refactor: move interstitials into its own file in `src/user/` 4 years ago
Julian Lam 324a12b6c3 feat: return back to profile after editing email 4 years ago
Julian Lam b3c916414b feat: allow registration interstitial abort to also follow returnTo 4 years ago
Julian Lam 96398faa3c feat: plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session
This utilises the new argument in user.auth.revokeAllSessions
4 years ago
Julian Lam b0a4a1d3e4 feat: allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) 4 years ago
Julian Lam f53fc1ad0b feat: return generic 404 on invalid confirm code 4 years ago
Julian Lam 824a72b220 fix: updated ACP > Manage > Users to handle users with no email address 4 years ago
Julian Lam d5b5b7d531 fix: allowed reset and reset_notify emails to go out to unconfirmed email addresses 4 years ago
Julian Lam ccf004f1f4 refactor: added user.email.remove method, updated email interstitial to handle email removal 4 years ago
Julian Lam 414d733d76 fix: bug where confirmation email was sent to the old email address, not the new one 4 years ago
Julian Lam 3bcd1f1438 fix: email validation flow, so that it actually works, fixed event logging bug, new email verification template 4 years ago
Julian Lam caf8968791 fix: accidental early return in confirmByCode, tests, race condition
A race condition caused mongo/psql tests to fail.
4 years ago
gasoved a917210c5b feat: invites no longer require email 4 years ago
Julian Lam 81611ae1c4 fix(emails): broken test for api/user/email/:email
+ fixed broken tests due to unexpected behaviour for email confirmation
4 years ago
Julian Lam c4e3362bd3 feat(emails): restore ability for admins to edit a user's email address [breaking]
The edited user's email will be automatically confirmed
4 years ago
Julian Lam afd2d8dab1 feat(emails): pass req in to filter:registration.interstitial 4 years ago
Barış Soner Uşaklı 7d115c8ef2 fix(emails): dont allow retrieving user data if showemail is false @julianlam 4 years ago
Julian Lam e726048e0c fix(emails): don't automatically associate email during user creation if passed in at registration 4 years ago
Julian Lam f52919990b feat(emails): display current email in interstitial form 4 years ago
Julian Lam b4b65ecd98 fix(emails): remove debug log 4 years ago
Julian Lam 087e6020e4 refactor(email): validation checking methods, +tests fix 4 years ago
Julian Lam 50517020a2 feat(emails): upgrade script for includeUnverifiedEmails 4 years ago
Julian Lam be97aa6f13 feat(emails): +includeUnverifiedEmails ACP setting 4 years ago
Julian Lam 69c96dd23c refactor(emails): more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation 4 years ago
Julian Lam f365bc4600 refactor(emails): interstitial for adding/updating email 4 years ago
Julian Lam 74aaa0a926 feat: show different registration intersitial lead text on new account vs. existing 4 years ago
Julian Lam 7c1d1c777b refactor(emails): remove email validation on client and server side 4 years ago
Julian Lam 12b2a979a0 feat: removal of emailExists socket listener 4 years ago
Barış Soner Uşaklı 04b1f702cd feat: add loggedin/guest class to body 4 years ago
Julian Lam 340ccb2498 style: lint fix 4 years ago
Julian Lam d1959a258b fix: #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] 4 years ago
Barış Soner Uşaklı 6c47a060c1 fix: #9668, add raw info to psql database page 4 years ago
Julian Lam ef4e74bfc8 refactor: client-side to use flag notes API 4 years ago
Julian Lam cc6cbfcdc4
Flags API (#9666)
* feat: new routes for flags API

+ flag get
+ flag creation, migration from socket method
+ flag update, migration from socket method
* fixed bug where you could not unassign someone from a flag

* feat: tests for new flags API

added missing files for schema update

* fix: flag tests to use Write API instead of sockets

* feat: flag notes API + tests

* chore: remove debug line

* test: fix breaking test on mongo
4 years ago
Barış Soner Uşaklı 4a56388ec3
feat: store topic tags in topic hash (#9656)
* feat: store topic tags in topic hash

breaking: remove color info from tags (use css)

* fix: remove unused tag modal

* fix: tag search
4 years ago
Julian Lam 415416d2a7 fix: translate language keys if passed in to formatApiResponse 4 years ago
Julian Lam 7036c3751e feat: internationalize API error messages 4 years ago
Julian Lam a54a3ee1ca fix: return proper API-style response if exception caught by error handler on v3 routes [breaking] 4 years ago
Barış Soner Uşaklı ff78969c2c fix: lint 4 years ago
Barış Soner Uşaklı 55d7e55867 fix: tests 4 years ago
Barış Soner Uşaklı 6ed7e937ce refactor: fix wording 4 years ago
Barış Soner Uşaklı 47c8c69264 fix: keep query string on redirects 4 years ago
Barış Soner Uşaklı 5fd190f7c4 feat: #9651, change category desc to multiline 4 years ago
Barış Soner Uşaklı 8e0561f226 perf: cache Topics.getTopicsTags 4 years ago
Barış Soner Uşaklı 10ddfff38f perf: bypass getMultipleUserSettings 4 years ago
Julian Lam e03782f218 fix(docs): #9648 4 years ago
Barış Soner Uşaklı c9348efbdc feat: add merge/fork hooks 4 years ago
Julian Lam b896484351 fix: #9634, re-jig top bar of Admin > Manage > Users 4 years ago
gasoved 97c8569a79 fix: hide private user data in api/v3/users/[uid] 4 years ago
Barış Soner Uşaklı d9e2190a6b fix: numThumb upgrade script 4 years ago
Barış Soner Uşaklı fee782c436 fix: acp dashboard sometimes not loading on cold load 4 years ago
Julian Lam 849049765b fix: #9636, sanitize all attributes in meta and link tags 4 years ago
Julian Lam acdbd04913 fix: #9627 4 years ago
Anton Grigoryev db65360c0d
fix(post-queue): moderatedCids is an array of numbers (#9631) 4 years ago
Barış Soner Uşaklı 52596902a6 feat: #9617 update fa link 4 years ago
Barış Soner Uşaklı 909db3ae71 Merge branch 'master' of https://github.com/NodeBB/NodeBB 4 years ago
Barış Soner Uşaklı ab6f062ff9 fix: prevent crash in expandObjBy #9618 4 years ago
Barış Soner Uşaklı 1bf263c4a2
9622 (#9625)
* fix: #9622

dont allow regular user to remove system tags

* refactor: add guest/spider check to isPrivileged

string/trim tag
4 years ago
Barış Soner Uşaklı 0d975bc4fb fix: dont show system tags in whitelist dropdown to regular users 4 years ago
Barış Soner Uşaklı 84e065752f
fix: #9622 (#9623)
dont allow regular user to remove system tags
4 years ago
Barış Soner Uşaklı 73f40e96a5 fix: #9620, fix notif delay 4 years ago
Barış Soner Uşaklı c92fc19b5c fix: #9619, add group chat filter to /notifications 4 years ago
Barış Soner Uşaklı 3cd9434b56 fix: scope 4 years ago
Barış Soner Uşaklı 1eda538da5 fix: #9615, catch exceptions in renderOverride 4 years ago
Barış Soner Uşaklı 46a454f194 feat: add bodyClass to 500 page 4 years ago
gasoved 8168c6c407
fix: purge uploaded images accordingly #9606 (#9611)
* fix: purge uploaded images accordingly

* fix: tests

* fix: relative paths
4 years ago
Julian Lam a2400f6baf fix: accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out 4 years ago
Julian Lam f9728aff2c feat: clear reset tokens on successful login 4 years ago
Julian Lam 5c42b3eab0 test: fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) 4 years ago
Julian Lam f6c14d6b62 fix: introduce artificial delay + delay fudging on invalid email during reset token generation 4 years ago
Julian Lam 229f96f872 fix: #9605, expire all active reset tokens for a uid if that uid generates a new one 4 years ago
Barış Soner Uşaklı 8c952aa381 fix: lint 4 years ago
Barış Soner Uşaklı be19f27f40 feat: add filter:categories.categorySearch 4 years ago
Barış Soner Uşaklı cc0cf99fed
feat: allow nested properties on category page (#9601)
* feat: allow nested properties on category page

* fix: remove debug

* fix: remove debug
4 years ago
Barış Soner Uşaklı 8ea58432c9 feat: show ip on acp manage users
update url on search
show matching ip when searching by ip
add ip to export csv
4 years ago
Barış Soner Uşaklı 6695927ea9 fix: pagination on acp users search 4 years ago
psychobunny 05cc7ccb60 feat: make undoTimeout configurable, closes #9599 4 years ago
Mats 2b42e7edb0 chore: lint 4 years ago
Mats 6f73261186 fix: extra ')' 4 years ago
Mats d07229aa6b chore: fix indentation 4 years ago
Mats edcba61aa9 fix: disallow editing of other users' notes
Feel free to close this if it is intentional, but as you are not allowed to delete other users notes I expect you shouldn't be able to edit them. Editing another users post also changes ownership, allowing you to then delete it.

I also added `error:` to the errormessage so that they display properly.
4 years ago
Barış Soner Uşaklı ca72aa93d7
Locks bug failing test (#9595)
* test: failing test for issue

* fix: #9593, don't lock if email is identical to username

* fix: lock calls after first call

* fix: add back email check

* test: remove invalid test

Co-authored-by: Julian Lam <julian@nodebb.org>
4 years ago
Julian Lam 816856b0c6 feat: introduce boolean res.locals flag to bypass session reroll (used by session-sharing)
The session reroll logic is still standard practice, but in some cases, it is not necessary or causes UX issues. An issue opened in session sharing (julianlam/nodebb-plugin-session-sharing#95) brought this to attention in that parsing the cookie to log in the user caused a reroll (as expected), but caused the session open on other tabs to be mismatched. If "re-validate" was turned on, it basically meant that it was not possible to use NodeBB with multiple tabs.

Session sharing now sets `reroll` to `false` if re-validate is enabled.
4 years ago
Barış Soner Uşaklı 286644d0b8 fix: #9592, check session 4 years ago
Barış Soner Uşaklı 3717df610a fix: don't crash if session doesn't exist 4 years ago
Barış Soner Uşaklı 66cae54ee3 fix: lint 4 years ago
Barış Soner Uşaklı 57e46e41e3 feat: allow modifying default category privileges 4 years ago
Julian Lam 16e0bca570 fix: improper use of filename extensions 4 years ago
Barış Soner Uşaklı d8d6c98970 fix: return null 4 years ago
Barış Soner Uşaklı ac7b093f99 feat: add filter:notifications.create 4 years ago
Barış Soner Uşaklı 3fb7444580 fix: returnOriginal deprecation
https://github.com/mongodb/node-mongodb-native/pull/2808
4 years ago
Barış Soner Uşaklı 3d5fef6e80 feat: pass req.query to getUnreadData 4 years ago
Julian Lam d2960aeb09 feat: added GET user route for api v3 4 years ago
Julian Lam 48b8e3bb3f fix: error when trying to trim an object 4 years ago
Barış Soner Uşaklı 9ebfdeb7ee fix: #9580, proper 404 when ajaxifying 4 years ago
Barış Soner Uşaklı 09f5179216 fix: lint 4 years ago
Barış Soner Uşaklı 77dde41f7b feat: keep query string when redirecting category 4 years ago
Barış Soner Uşaklı 951e71a0e5 fix: #9567 fix tests 4 years ago
Barış Soner Uşaklı 5215c30ade fix: #9567, use regular 404 4 years ago
Barış Soner Uşaklı 3d6bdeb3df feat: add req.query to flags.list/getCount 4 years ago
Barış Soner Uşaklı d35c64b1a2 feat: add filter:flags.getFlagIdsWithFilters 4 years ago
Barış Soner Uşaklı 1ec9739629
switch to request-promise-native (#9561)
* refactor: cli/upgrade async/await

async/await cli/upgrade-plugins
remove unused payload.files

* fix: add missing await

* refactor: use request-promise-native
4 years ago
Barış Soner Uşaklı ac86937c88
refactor: cli/upgrade async/await (#9558)
* refactor: cli/upgrade async/await

async/await cli/upgrade-plugins
remove unused payload.files

* fix: add missing await
4 years ago
Barış Soner Uşaklı 1ce595083a fix: ioredis upgrade fix, maybe 4 years ago
Barış Soner Uşaklı 4afca6900b feat: add filter:user.getWatchedCategories 4 years ago
Julian Lam 1d9cfe1e96 fix: bug where interstitial errors were not properly passed to the front-end via req.flash 4 years ago
Barış Soner Uşaklı 518157d9fa feat: pass req.query to getUserDataByUserSlug 4 years ago
Barış Soner Uşaklı 0551642a35 fix: #9553, use same fields for user search results in acp 4 years ago
Barış Soner Uşaklı 94c12e3771 feat: #9508, add cluster support 4 years ago
Barış Soner Uşaklı a3d6c56ec3 feat: #9551 4 years ago
Barış Soner Uşaklı ffa8016355 fix: lint 4 years ago
Barış Soner Uşaklı fad5988ed6 fix: tests 4 years ago
Barış Soner Uşaklı 074ee859c4 fix: tests 4 years ago
Barış Soner Uşaklı 1f3e660108 feat: add template to hook 4 years ago
Barış Soner Uşaklı a2442ee914 feat: add filter:account.getPostsFromUserSet 4 years ago
Peter Jaszkowiak dd81dd03e0
fix(#9508): switch to ioredis (#9545)
* switch to ioredis

also need this fix in redisearch:

redis-search.js:98
```
  redisClient.multi(cmds).exec(function(err, ids) {
    if (err) {
      return callback(err);
    }
    var errRes = ids[resultIndex];
    if (errRes[0]) {
      return callback(errRes[0]);
    }
    callback(null, errRes[1]);
  });
```

* dbsearch compatible with ioredis

* fixed dbsearch?
4 years ago
Barış Soner Uşaklı 0096cf178a refactor: bubble other errors 4 years ago
Julian Lam a9bb108802 fix: wrong error message checked 4 years ago
Julian Lam ec6d1e2321
fix: #9507 session reroll causes socket.io to become confused (#9534)
* fix: #9507 session reroll causes socket.io to become confused

* fix: added return

* fix: simpler logic for error handling

* fix: overly sensitive catch
4 years ago
Barış Soner Uşaklı f6b583bb9d feat: #9533, allow redirect in build hooks 4 years ago
Barış Soner Uşaklı 2c22b06feb fix: isObjectField(s) empty field 4 years ago
Barış Soner Uşaklı 7c1e163d82 Revert "feat: add _hooks metadata object to all hooks that have object-type params"
This reverts commit 46899ccadb.
4 years ago
Julian Lam 46899ccadb feat: add _hooks metadata object to all hooks that have object-type params 4 years ago
Barış Soner Uşaklı d8e4fd4cdd feat: add filter:categories.copySettingsFrom 4 years ago
Barış Soner Uşaklı 084c985117 feat: guard against multiple resolves 4 years ago
Barış Soner Uşaklı 5fe97b9c2e revert: sync hooks 4 years ago
Barış Soner Uşaklı 6ed8890c2e fix: #9512, fix chat icon if no privileges 4 years ago
Barış Soner Uşaklı b40fc4b64d feat: #9511 send notifications on accept/reject 4 years ago
Barış Soner Uşaklı a478dc7ee8 feat: add filter:middleware.autoLocale 4 years ago
Barış Soner Uşaklı 308252f566 fix: #9503, dont error in markUnread if room doesnt exist
this prevents deleting the user if they are the only person in the chat room
4 years ago
Barış Soner Uşaklı 9e07efc126 fix: use socket.request.headers 4 years ago
Barış Soner Uşaklı ed534f34f5 fix: buildReqObject headers for socket.io calls 4 years ago
Barış Soner Uşaklı 01956af43a feat: remove sync hooks support 4 years ago
Barış Soner Uşaklı 4e490f6058 test: fix redis tests 4 years ago
Barış Soner Uşaklı 92de49be00 test: add test for undefined fields in getObjectsFields 4 years ago
Barış Soner Uşaklı 1db8920b18 refactor: make debug handler async 4 years ago
gasoved 8b79c7f139
fix: regress. rescheduling shouldn't add to sets that pinning removed… (#9477)
* fix: regress. rescheduling shouldn't add to sets that pinning removed from

* test: remove the also from tests
4 years ago
Barış Soner Uşaklı 9b71b087ec feat: lang strings 4 years ago
Barış Soner Uşaklı 435067aa5f test: remove logs 4 years ago
Barış Soner Uşaklı 2ea468daa3 test: clear cache between runs, require middleware later in helpers 4 years ago
Barış Soner Uşaklı d15e27107e test: log 4 years ago
Barış Soner Uşaklı 354e0a822d test: remove equals 4 years ago
psychobunny 4dd3844680 fix: logic is hard 4 years ago
psychobunny 2e9efc0e8a fix: wrong variable for cache 4 years ago
psychobunny fa0c92a7c4 fix: eslint 4 years ago
psychobunny ea22cd302a fix: use req.ip instead, since guests can upload as well 4 years ago
psychobunny a9978fcfd2 feat: rate limit file uploads 4 years ago
Barış Soner Uşaklı 36f119a96a fix: #9492, keep query params on redirect 4 years ago
gasoved 8faa6e4515
feat: filter flags by username #8489 (#9451)
* feat: filter flags by username #8489

* feat: toggle flag filter text
4 years ago
Julian Lam 1fee6a702a fix: #9487, session data gathered during a session is lost upon login
e.g. returnTo, tids_viewed, etc.
4 years ago
Julian Lam 697ed3bf37 feat: roll session identifier on login, as security best practice
see: https://owasp.org/www-community/attacks/Session_fixation
4 years ago
Julian Lam e845c34b52 fix: registration interstitials not handling promise rejections properly 4 years ago
Barış Soner Uşaklı 4494728cf8 feat: allow different slugs 4 years ago
psychobunny 60eed8d89f fix: let recent replies respect oldest/newest sort settings 4 years ago
Barış Soner Uşaklı 6907837fce fix: #9483, fix events count display 4 years ago
Barış Soner Uşaklı 161081e960 fix: escape flag reason 4 years ago
Barış Soner Uşaklı fd3bc605c6 feat: remove sort again 4 years ago
Barış Soner Uşaklı 2dc3283f19 fix: updateCategoryTagsCount 4 years ago
Barış Soner Uşaklı f9df6431c9 revert: revert tag sort 4 years ago
Barış Soner Uşaklı 036f935fa9
fix: #9473 (#9476) 4 years ago
gasoved 397baf0254
refactor: widgets (#9471) 4 years ago