Commit Graph

12398 Commits (07ce0c3942505deafb03c483491ca16f0e5ea470)

Author SHA1 Message Date
Barış Soner Uşaklı 08f2a05053 fix: , create verified/unverified groups on install
Barış Soner Uşaklı 6be330f2d6 lint: remove unused require
Barış Soner Uşaklı b548083b24 perf: increase batch size
Barış Soner Uşaklı 079c487dcb fix: controversial posts/bests posts not showing anything
fix upgrade script so posts with negative votes are stored, a post can have 10 upvotes and 2 downvotes
fix missing negative votes checks
remove unnecessary pids flters since the cids are only already filtered by topics:read
Julian Lam d34471f69f fix: regression in package.json merging logic that caused extraneous packages to not be removed
Julian Lam 689c125cd3 fix: , package merging should deep merge nested objects
+ tests
Julian Lam cf88483fee feat: upgrade script to store downvotes posts in the user :votes sorted set
Julian Lam 5cff6e3f95 fix: bug where .reduce() exploded due to no initial value, if input value was an empty array
Julian Lam 5afd5de07d feat: new accounts route to show most downvoted ('controversial') posts
Barış Soner Uşaklı 45ca046533 Merge branch 'master' of https://github.com/NodeBB/NodeBB
Barış Soner Uşaklı dcb201dfa8 fix: https://github.com/NodeBB/NodeBB/issues/10242
Julian Lam ad63517511 fix: missing early return
Julian Lam 936562c3cb fix: handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired
Julian Lam 0322e984e0 fix: , don't check email:uid, instead verify an email confirmation is active
Barış Soner Uşaklı 9883910857 fix: don't crash if requestedFields is undefined
Barış Soner Uşaklı 7f1c4477e3 feat: allow gif profile images, sharp 0.30.0 supports gifs
Julian Lam 8ba9e67cbd feat: detect alternative package managers based on lockfile
If a package manager is not explicitly set in config.json or passed-in via argv/env, NodeBB will now check for the presence of alternative package managers' lockfiles and adjust the package manager to-be-used accordingly. If the standard npm lockfile exists, npm will always be used.
Julian Lam 9a1690857d refactor: updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value
Julian Lam c869d7dbb3 docs: some tweaks to cli help
Julian Lam c3d926ff7e fix: a missed invocation of colors
Julian Lam cf8f62aed9
feat: remove colors in favour of chalk ()
* feat: remove colors in favour of chalk

* fix: bad conversion from colors to chalk in src/cli/index.js

* fix: padWidth calculation to account for control characters

* fix: termWidth calculation, but swapped one problem for another

* fix: formatItem, implement my own padRight to take control characters into account
Julian Lam fa7dcdb968 fix: proactively guard against homograph characters in website values
Barış Soner Uşaklı 1d01741ae7 fix: , don't use leading slash in directory names
change to use decodeURIComponent in utils.params
Julian Lam dee9cca3c8 fix: email ban tests
Julian Lam e25c0313d1 Revert "refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent"
This reverts commit f0e32ff182.
Julian Lam 165a1d8b76 Revert "fix: update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler"
This reverts commit d4e5259fcf.
Julian Lam d4e5259fcf fix: update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler
Julian Lam b3f7b742c1 fix: derp
Julian Lam ea27eaf166 feat: no more sending emails to banned users, + feature flag
Julian Lam f0e32ff182 refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent
Note that of course this doesn't mean the message was _delivered_, just sent off.

This will stop issues where emailer errors crash NodeBB
Barış Soner Uşaklı 2a89ad8288 fix: use escaped group names in invite modal
Julian Lam e1e1d5223e feat: push the theme name into body class
Julian Lam d91aeea3c3 feat: add ACP toggles for COEP and CORP headers
Julian Lam d098e26f82
User Email and email validation API ()
* feat: wip user emails api

* fix: allow admins with manage-users access to email confirmation api as well

* fix: wrong route path

* docs: openapi spec
Barış Soner Uşaklı 10949184ca
test: add failing guest csrf test ()
* test: add failing guest csrf test

* test: use correct var

* fix: use applyCsrf for guests as well
Barış Soner Uşaklı 2835966518 fix: urls used when recent/unread/popular/top is used as the homepage
if recent is used as the homepage then changing the selected category or filters was redirecting the user to forum.com/recent?cid=1 instead of staying at forum.com/?cid=1

also fix unread page mark read button showing the selected category
Barış Soner Uşaklı c1ec20470b fix: catch exceptions from sendNotifications
Barış Soner Uşaklı 3e8cb732c5 fix: multiple cid filter on flags page
if multiple categories were selected it wasnt applied because of typeof string check
Magnus 7bd3e31dec
Fullname in notifications ()
* init - fullname notifications setting

* fullname in topic reply

* fullname for group-request-membership

* fullname for group-leave notification

* fullname for new-post-flag & new-user-flag

* removed log

* fullname for user follow

* fullname in message notification

* fullname in follow

* fullname for sendNotificationToPostOwner

* fullname in sendNotificationToTopicOwner

* fullname in doExport

* shorthand name set

* shorter name set

* fullname in notifications

* displayname for notifications

* removed unused require
Barış Soner Uşaklı f9279b636b fix: post indices if there is a blocked user in topic
Barış Soner Uşaklı 3b72ff8742 fix: dont add duplicate link backs
Barış Soner Uşaklı b06c6329e4 fix: , fix topic linkbacks duplicating on post edit
Barış Soner Uşaklı d1eb21c56d fix: , don't show optional message if email is required
Barış Soner Uşaklı 6a75ed50fa fix: , fix postqueue accept/reject notification text
Barış Soner Uşaklı 4799efc790 fix: , fix regression prevent guest post
Julian Lam 31ea2266a6 feat: nicer error handling for bad jwt in unsubscribe template
Barış Soner Uşaklı c9fabb0e1d refactor: add method to error messages
Julian Lam e9ee843b27
fix: CSRF handler to go back to saving in session ()
Julian Lam 6ca216ab6e feat: revoke user sessions on successful password reset
Julian Lam be4dbe3441 chore: org; merge consecutive await calls into one Promise.all
Julian Lam ffdf26afef docs: comment hint :shipit:
Barış Soner Uşaklı afc75ba48a lint: remove unused
Barış Soner Uşaklı 9b75b1ede2 test: update tag tests, fix linux symlink error
Barış Soner Uşaklı c9592e173c fix: lint
Barış Soner Uşaklı a75a043b61 feat: allow % in tags,
Barış Soner Uşaklı 42caef7fa7 fix: , add back ace editor searchbox
Barış Soner Uşaklı cc27a324b5 fix: notice links in subfolder installs
Julian Lam d89fc44c03 fix: move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes
fixes 
Barış Soner Uşaklı 0d9ec9d30e test: fix restore test
Julian Lam b5b188fd53 feat: allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool
/cc @barisusakli
Barış Soner Uşaklı 07232a8cf6 fix: retry incrObjtFieldBy
Julian Lam d960f601a1 style: eslint
Julian Lam 2fe53cf849 feat: `GET /api/v3/chats/:roomId/messages`
Julian Lam d95b4ee29a fix: assertion check to ensure messages are in the room when editing/deleting, etc
Julian Lam aaa6f752d0 refactor: put message api calls behind `/messages` prefix,
Julian Lam aeb43b9bb1 fix: rename language key for incorrect parameter type error
Julian Lam 16ba16cdc4 fix: deprecate chats.leave
Julian Lam fe17c94c35 feat: `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid`
Julian Lam 6294beea0b fix: re-allow kicking of the other party in a 1-to-1 chat
Julian Lam d62ee84637 feat: `POST /chats/:roomId/users`
Julian Lam 6eea6451d2 feat: `GET /chats/:roomId/users` [breaking]
Julian Lam d5fd098ecf feat: `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid`
Julian Lam 90fcbe4416 feat: middleware.assert.message
Julian Lam b292960594 feat: `GET /chats/:roomId/:mid`
Julian Lam f48ed3658a feat: `PUT /chats/:roomId/:mid`
Julian Lam 140f9d2481 fix: isFinite check for room assertion, more test migrating
Julian Lam e745e21242 chore: use apiv3 for room rename tests
Julian Lam 74f1905ea8 feat: allow API checkRequired middleware error to be internationalized
Julian Lam 9a4fd5dc7e feat: `PUT /api/v3/chats/:roomId`
Julian Lam eeffb9d978 feat: `POST /api/v3/chats/:roomId`
Julian Lam 09cf9c7770 feat: `GET /api/v3/chats/:roomId`
Julian Lam 40b4544e70 feat: `POST /api/v3/chats`, chat room creation, plus openAPI docs update
Julian Lam 94bead71fe feat: `GET /api/v3/chats`
Julian Lam 02e878be72 feat: stub code for v3 chats api
Barış Soner Uşaklı 35fea58a57 refactor: only write analytics data on nbb that has runJobs=true
prevents mongodb index error when lots of nodebbs try to write to the same key
Barış Soner Uşaklı 42781467d2 refactor: remove knonwOwner param
Barış Soner Uşaklı 8fb89d761a fix: don't crash server if analytics fails to save
fixes
MongoBulkWriteError: E11000 duplicate key error collection:
 community.objects index: _key_1_value_-1 dup key: { _key: "analytics:pageviews", value: "1639807200000" }
Barış Soner Uşaklı e332acf3f7 fix: upgrade script to handle strings as well
Barış Soner Uşaklı 4e1d421722 refactor: remove unused validator
Barış Soner Uşaklı c4042c70de feat: , allow seeing and editing your queued posts
allow regular users access to post queue
allow regular users to edit their queued post/topic title
allow regular users to remove their post from post queue
ability to send a notification to user without removing from post queue
allow accessing single post queue items from notifications
Barış Soner Uşaklı b8896d1328 refactor: only pass qs
Barış Soner Uşaklı 599bffd8e0 feat: pass in all query params to category search filter
Barış Soner Uşaklı c4156bdd7b feat: add data param to filter:categories.search
so plugins can do custom search for categories
Barış Soner Uşaklı 1e60ae8703 refactor: change error message
Barış Soner Uşaklı 1264dcb555 test: add email interstitial tests
Barış Soner Uşaklı 1f063058f0 breaking: remove socket.emit('user.exists')
remove socket.emit('user.deleteAccount')
remove socket.emit('user.follow')
remove socket.emit('user.unfollow')
remove socket.emit('user.saveSettings')
Barış Soner Uşaklı 6b45dee9c5 breaking: remove socket.emit('user.changeUsernameEmail')
remove socket.emit('user.changePassword')
remove socket.emit('user.updateProfile')
Barış Soner Uşaklı cc0a087a70 fix: prevent crash if groups is not valid json
Barış Soner Uşaklı 968d461692 fix: upgrade script
Barış Soner Uşaklı 737e1c191e fix: delete left over nav items after removal of some
Barış Soner Uşaklı 10e890e41f fix: targetBlank/dropdown not getting cleared
show caret if nav item is dropdown
Barış Soner Uşaklı 69c96078ea breaking: , store nav items in objects
Barış Soner Uşaklı 3b0c42a591 fix: prettier bulk method usage
Julian Lam 42959df053 fix: bug where groupChat property was not set for chat rooms
Barış Soner Uşaklı f918a38164 breaking: remove socket.emit('topics.follow')
remove socket.emit('topics.changeWatching')
Barış Soner Uşaklı 6ad0472106 breaking: remove socket.emit('topics.post')
remove socket.emit('topics.search')
remove socket.emit('topics.getTopic')
Barış Soner Uşaklı 49641a3217 breaking: remove socket.emit('user.banUsers');
remove socket.emit('user.unbanUsers');
Barış Soner Uşaklı 4604a5724c breaking: remove socket.emit('posts.reply')
remove socket.emit('posts.getPost')
Barış Soner Uşaklı 6d95684bc8 breaking: remove socket.emit('user.changePicture')
Barış Soner Uşaklı 0d694c781c breaking: remove socket.emit('user.search')
Barış Soner Uşaklı 99f865c618 breaking: remove socketHelpers.setDefaultPostData
Barış Soner Uşaklı 02ea17ea1b breaking: remove deprecated groups socket calls
socket.emit('groups.join') removed use `PUT /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.leave') removed use `DELETE /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.grant') removed, `PUT /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.rescind') removed, `DELETE /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.update') removed, `PUT /api/v3/groups/:slug`
socket.emit('groups.create') removed, `POST /api/v3/groups`
socket.emit('groups.delete') removed, `DELETE /api/v3/groups`
Julian Lam bc7707aa88 fix: show user history only to admins and gmods
Baris Usakli 0d1e57dce0 breaking: remove deprecated methods
socket.emit('topics.delete') removed use `DELETE /api/v3/topics/state`
socket.emit('topics.restore') removed use `PUT /api/v3/topics/state`
socket.emit('topics.purge') removed use `DELETE /api/v3/topics`
socket.emit('topics.lock') removed use `PUT /api/v3/topics/lock`
socket.emit('topics.unlock') removed use `DELETE /api/v3/topics/lock`
socket.emit('topics.pin') removed use `PUT /api/v3/topics/pin`
socket.emit('topics.unpin') removed use `DELETE /api/v3/topics/pin`
Julian Lam 45c9dde319 fix: no need to pass 'img' to teaser tags stripping as images are already converted to alt text
Barış Soner Uşaklı bd1cb2d4f9 breaking: remove socket.emit('posts.delete')
remove socket.emit('posts.restore')
remove socket.emit('posts.purge')
remove socket.emit('posts.deletePosts')
remove socket.emit('posts.purgePosts')
Barış Soner Uşaklı ec1d5e38da breaking: remove socket.emit('posts.upvote')
socket.emit('posts.downvote')
socket.emit('posts.unvote')
Barış Soner Uşaklı 8427c5d9db breaking: remove socket.emit('posts.move')
Barış Soner Uşaklı 4247f62441 breaking: remove socket.emit('posts.edit')
Barış Soner Uşaklı f7418ccd47 breaking: remove socket.emit('posts.bookmark/unbookmark')
Barış Soner Uşaklı 5c3d5f1f40 test: make it async
Barış Soner Uşaklı cfd474487a refactor: async
Barış Soner Uşaklı f0394c4965 refactor: async
Barış Soner Uşaklı 8491f67daf refactor: use async
Barış Soner Uşaklı 07e2741ea6 breaking: remove deprecated admin.groups methods
Barış Soner Uşaklı a8afdc6019 fix: , don't modify fields array
use a single setObjectFields for the profile update
Barış Soner Uşaklı 45d8157fee fix: tests
Barış Soner Uşaklı 9627fa9029 refactor: always returns array
Barış Soner Uşaklı 830166d120 fix: , count posts instead of incr/decr
Barış Soner Uşaklı f4aa249d8c refactor: use async/await
Barış Soner Uşaklı cbf198fe9b lint: remove unused
Barış Soner Uşaklı 45d755b6ae breaking: remove socket.emit('categories.getCategory')
Barış Soner Uşaklı cc3f82bc83 breaking: remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings')
Barış Soner Uşaklı 0b9c01f9a0 breaking: remove deprecated socket.emit('admin.categories.update')
Barış Soner Uşaklı ba5d2e7b81 breaking: remove deprecated socket.emit('admin.categories.purge')
Barış Soner Uşaklı b335372348 breaking: remove deprecated socket.emit('admin.categories.create')
Barış Soner Uşaklı 10c19af2ad breaking: remove deprecated socket.emit('admin.categories.getAll')
Barış Soner Uşaklı a20abdce02 lint: remove unused
Barış Soner Uşaklı 36eb47d9a0 refactor: change var name
Barış Soner Uşaklı 170e5dd941 breaking: remove getTopicPosts(tid, ...) usage
Barış Soner Uşaklı 906dc5675e fix: handle start=0 stop=0 for topics.getTopicPosts
add more tests
Julian Lam fa01801f64 fix: don't throw on invalid session, just return early so socket is not opened.
Also updated the plugin hook call to `static:sockets.validateSession` to not return a result, because in static calls that result is always null anyway
Barış Soner Uşaklı a29535833f fix: , dont use spaces in tag class name
Barış Soner Uşaklı 41db9436e8 perf: only add middleware if relativePath is set
Julian Lam a3bdb70617 feat: ensure that all requests handled by NodeBB fall under the relative_path as configured
Barış Soner Uşaklı 2bb0828af6 refactor: dont need local function
sadaszewski a1c9a69cd3
incr by bulk. ()
* incr by bulk.

* Update analytics.js

* Update analytics.js

* lint: fix

Co-authored-by: Barış Soner Uşaklı <baris@nodebb.org>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
Barış Soner Uşaklı 6ea3b51f12
Zincrybulk ()
* feat: zincry bulk

* feat: psql bulk incr placeholder

* test: redis test fix

* test: redis test
Barış Soner Uşaklı d9c42c000c feat: show 10 members
Barış Soner Uşaklı 1cdb0b1e19 fix: don't crash if tid is falsy
Barış Soner Uşaklı 0414356cf7 perf: don't load all set members to get count
Barış Soner Uşaklı 50063fe238 fix: regression from 27c05448e1
Barış Soner Uşaklı 82b72f7edc lint: remove unused utils
Barış Soner Uşaklı 5843122178 test: add missing tests
Barış Soner Uşaklı 8117b7f22f breaking: remove deprecated post diff socket calls
Barış Soner Uşaklı 324262cbb5 refactor: DRY
Barış Soner Uşaklı 1a7fffc7e9 breaking: remove deprecated user middlewares
Barış Soner Uşaklı 941ecaf899 fix: keep query params on /me redirects
Barış Soner Uşaklı 65c5504193 fix: 403/400/500 page not generating csrf_token
Barış Soner Uşaklı 3dd681ebce fix: error pages dont have config.csrf_token
Barış Soner Uşaklı 7434cbf66f test: add api token tests
Barış Soner Uşaklı 1e53552874 feat: closes
Baris Usakli 06bfec8840 feat: add href
Baris Usakli 0f14f23b2a feat: , wip
Julian Lam 6c07433dea
refactor: use routePrefixMap instead of routeRegexpMap, +tests ()
* refactor: use routePrefixMap instead of routeRegexpMap, +tests

Currently tests fail because privilege pages resolve if passed garbage... hmm

* fix: priv check paths

remove /v3 from path as well

Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
Barış Soner Uşaklı daf385cd42 refactor: use hasOwnProprety
Barış Soner Uşaklı 404a877408 test: add missing tests
Barış Soner Uşaklı 6dcdf1d342 breaking: remove setTopicSort/setCategorySort
Barış Soner Uşaklı 7aa85882d5 chore: right dropdown
Barış Soner Uşaklı a998cc1c47 chore: right dropdown
Barış Soner Uşaklı a7d1dfb65c breaking: remove deprecated socket user create/delete functions
add missing tests
Barış Soner Uşaklı a0e2704da1 Merge branch 'master' of https://github.com/NodeBB/NodeBB
Barış Soner Uşaklı c93d7fdbdd breaking: remove deprecated uploads.delete
Julian Lam e0caa5e0c4 fix: removed unused var
Julian Lam 01bd8a8694
remove email only login ()
* feat: remove ACP option for email-only logins

* feat: remove email-only login, upgrade script to fix config
Barış Soner Uşaklı 79de48c57f breaking: remove deprecated methods
Barış Soner Uşaklı 2473d5d873 fix: , properly auto confirm first user
Barış Soner Uşaklı 71e34be565 fix: cli password reset
Barış Soner Uşaklı d375dcb873 test: submitUsage
Barış Soner Uşaklı 29b3587d91 test: middleware/expose.js
Barış Soner Uşaklı c5f08fdc81 breaking: remove socket.io/flags.js
refactor: helpers.loginUser returns a single object {jar, csrf_token}
Julian Lam f0d192fbfd feat: autocomplete for activate/reset
useless features™️
Julian Lam 5b42b6b369
API route for returning tracked analytics keys ()
* feat: track metrics saved by NodeBB (and assoc. plugins), 

* feat: route to retrieve analytics keys, closes 
Julian Lam 449366ca83 fix: consolidate plugin reset logic
Barış Soner Uşaklı 9245f71a66 fix: search crash
Barış Soner Uşaklı fb363957d1 refactor: tab rules
Barış Soner Uşaklı c26870d227 feat: , add history entry for note deletion
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
Barış Soner Uşaklı d5bfd51267 fix: , 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
Barış Soner Uşaklı e368feef51 refactor: dont expost entire res._locals to client side
Barış Soner Uşaklı 190532b3b4 refactor: shorter meta.settings.get
Barış Soner Uşaklı 51cbeccb08 refactor: clone settings before returning
prevents plugins from mistakenly modifying saved settings in cache
Barış Soner Uşaklı 27c05448e1 refactor: remove another async.series
Barış Soner Uşaklı 0532c1b2a1 feat: , don't remove existing fields form config.json
Barış Soner Uşaklı 047f031dd7 fix: , dont allow new rooms or adding to a room if target is blocked
Barış Soner Uşaklı f729e51921 refactor: clone before returning
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
Barış Soner Uşaklı 8379c11b22 refactor: setObjectBulk to match sortedSetAddBulk
Baris Usakli d412ba4411 perf: closes , bulk methods for settings
Julian Lam 09e0c6d503 feat: add feature flag to disable verification emails, closes