2494 Commits (c838782816815ef687474ce0bd00975fe1502ee0)

Author SHA1 Message Date
Julian Lam 7f870beb59 fix: bug where post associations are not shown when the directory is `files` 3 years ago
Julian Lam a35642601c fix: buildBreadcrumbs naively prepending relative path even if absolute paths are passed in 3 years ago
Barış Soner Uşaklı b17a81bfb0 fix: translate api error messages to user lang, closes #10623, 3 years ago
Barış Soner Uşaklı b860c2605c feat: paginaton for admins-mods, closes #10610
ability to select categoriest to see children
3 years ago
Barış Soner Uşaklı 3a77e71443 lint: fix semicolon 3 years ago
Barış Soner Uşaklı a583141252 feat: add button to see category children, closes #10606 3 years ago
Barış Soner Uşaklı 0e60a704a5 fix: 'unread' postIndex regression closes #10607 3 years ago
Julian Lam 0c19b1e57c feat: send back missing parameters as array of missing properties, in API response 3 years ago
Barış Soner Uşaklı 23175110a2 feat: post queue bulk actions closes #10520, fix #10555, 3 years ago
Barış Soner Uşaklı d20b07cfea
Webpack5 (#10311)
* feat: webpack 5 part 1

* fix: gruntfile fixes

* fix: fix taskbar warning

add app.importScript
copy public/src/modules to build folder

* refactor: remove commented old code

* feat: reenable admin

* fix: acp settings pages, fix sortable on manage categories

embedded require in html not allowed

* fix: bundle serialize/deserizeli so plugins dont break

* test: fixe util tests

* test: fix require path

* test: more test fixes

* test: require correct utils module

* test: require correct utils

* test: log stack

* test: fix db require blowing up tests

* test: move and disable bundle test

* refactor: add aliases

* test: disable testing route

* fix: move webpack modules necessary for build, into `dependencies`

* test: fix one more test

remove 500-embed.tpl

* fix: restore use of assets/nodebb.min.js, at least for now

* fix: remove unnecessary line break

* fix: point to proper ACP bundle

* test: maybe fix build test

* test: composer

* refactor: dont need dist

* refactor: more cleanup

use everything from build/public folder

* get rid of conditional import in app.js

* fix: ace

* refactor: cropper alias

* test: lint and test fixes

* lint: fix

* refactor: rename function to app.require

* refactor: go back to using app.require

* chore: use github branch

* chore: use webpack branch

* feat: webpack webinstaller

* feat: add chunkFile name with contenthash

* refactor: move hooks to top

* refactor: get rid of template500Function

* fix(deps): use webpack5 branch of 2factor plugin

* chore: tagging v2.0.0-beta.0 pre-release version 💥 :shipit: 🎉 🚀

* refactor: disable cache on templates

loadTemplate is called once by benchpress and the result is cache internally

* refactor: add server side helpers.js

* feat: deprecate /plugins shorthand route, closes #10343

* refactor: use build/public for webpack

* test: fix filename

* fix: more specific selector

* lint: ignore

* refactor: fix comments

* test: add debug for random failing test

* refactor: cleanup

remove test page, remove dupe functions in utils.common

* lint: use relative path  for now

* chore: bump prerelease version

* feat: add translateKeys

* fix: optional params

* fix: get rid of extra timeago files

* refactor: cleanup, require timeago locale earlier

remove translator.prepareDOM, it is in header.tpl html tag

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* feat: allow app.require('bootbox'/'benchpressjs')

* refactor: require server side utils

* test: jquery ready

* change istaller to use build/public

* test: use document.addEventListener

* refactor: closes #10301

* refactor: generateTopicClass

* fix: column counts for other privileges

* fix: #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking]

* fix: typo in hook name

* refactor: introduce a generic autocomplete.init() method that can be called to add nodebb-style autocompletion but using different data sources (e.g. not user/groups/tags)

* fix: crash if `delay` not passed in (as it cannot be destructured)

* refactor: replace substr

* feat: set --panel-offset style in html element based on stored value in localStorage

* refactor: addDropupHandler() logic to be less naive

- Take into account height of the menu
- Don't apply dropUp logic if there's nothing in the dropdown
- Remove 'hidden' class (added by default in Persona for post tools) when menu items are added

closes #10423

* refactor: simplify utils.params [breaking]

Retrospective analysis of the usage of this method suggests that the options passed in are superfluous, and that only `url` is required. Using a browser built-in makes more sense to accomplish what this method sets out to do.

* feat: add support for returning full URLSearchParams for utils.params

* fix: utils.params() fallback handling

* fix: default empty obj for params()

* fix: remove \'loggedin\' and \'register\' qs parameters once they have been used, delay invocation of messages until ajaxify.end

* fix: utils.params() not allowing relative paths to be passed in

* refactor(DRY): new assertPasswordValidity utils method

* fix: incorrect error message returned on insufficient privilege on flag edit

* fix: read/update/delete access to flags API should be limited for moderators to only post flags in categories they moderate

- added failing tests and patched up middleware.assert.flags to fix

* refactor: flag api v3 tests to create new post and flags on every round

* fix: missing error:no-flag language key

* refactor: flags.canView to check flag existence, simplify middleware.assert.flag

* feat: flag deletion API endpoint, #10426

* feat: UI for flag deletion, closes #10426

* chore: update plugin versions

* chore: up emoji

* chore: update markdown

* chore: up emoji-android

* fix: regression caused by utils.params() refactor, supports arrays and pipes all values through utils.toType, adjusts tests to type check

Co-authored-by: Julian Lam <julian@nodebb.org>
3 years ago
Barış Soner Uşaklı e8058ca35c feat: add response:helpers.notAllowed 3 years ago
CommanderRoot 200f0b2e4f
refactor: replace deprecated String.prototype.substr() (#10432)
.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
3 years ago
Julian Lam 38ca73c493 fix(security): explicitly declare cache-control header instead of using middleware
This commit reverts 1f6f389ff2
3 years ago
Julian Lam 1f6f389ff2 fix(security): cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers.
This commit also reverts e39cdd490b
3 years ago
Barış Soner Uşaklı 7c946570d5 feat: on online users page override timeago cutoff to 24 hours 3 years ago
Barış Soner Uşaklı be6bbabd0e feat: ability to mute users
new mute privilege
3 years ago
Barış Soner Uşaklı 371b46581a fix: #10366, remove dupe /files
dont display duplicate thumb og:image items
3 years ago
Barış Soner Uşaklı 56345777ce fix: always show self on /users?online 3 years ago
Barış Soner Uşaklı 21cd1e612f fix: db call 3 years ago
Barış Soner Uşaklı cc665fd614 fix: lastonline timestamps and display for guests 3 years ago
Barış Soner Uşaklı eac9cd03ca feat: closes #10324, show recently online users as well 3 years ago
Barış Soner Uşaklı 50ed3a324c test: possible fix random psql test failure 3 years ago
Barış Soner Uşaklı 7ee4e4e004 fix: #10357 3 years ago
Julian Lam 5479f36443 fix: #10358, bad uploads path 3 years ago
Barış Soner Uşaklı 58b5781cea feat: closes #10296
asset_base_url in nconf
keep assetBaseUrl in config for backwards compat
3 years ago
Julian Lam 5d7e1ebc68 style: linting errors 3 years ago
Julian Lam 6489e9fd9e refactor: change the post uploads' hash seeds to have the `files/` prefix 3 years ago
Barış Soner Uşaklı 350052ec50 fix: language keys 3 years ago
Barış Soner Uşaklı d70ce3a937 fix: #10273, properly calculate item count for best/controversial 3 years ago
Barış Soner Uşaklı 6be330f2d6 lint: remove unused require 3 years ago
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
3 years ago
Julian Lam 5cff6e3f95 fix: bug where .reduce() exploded due to no initial value, if input value was an empty array 3 years ago
Julian Lam 5afd5de07d feat: new accounts route to show most downvoted ('controversial') posts 3 years ago
Julian Lam ad63517511 fix: missing early return 3 years ago
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 3 years ago
Julian Lam 0322e984e0 fix: #10236, don't check email:uid, instead verify an email confirmation is active 3 years ago
Julian Lam cf8f62aed9
feat: remove colors in favour of chalk (#10142)
* 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
3 years ago
Barış Soner Uşaklı 1d01741ae7 fix: #10208, don't use leading slash in directory names
change to use decodeURIComponent in utils.params
3 years ago
Barış Soner Uşaklı 2a89ad8288 fix: use escaped group names in invite modal 3 years ago
Julian Lam d098e26f82
User Email and email validation API (#10160)
* 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
3 years ago
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
3 years ago
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
3 years ago
Julian Lam 31ea2266a6 feat: nicer error handling for bad jwt in unsubscribe template 3 years ago
Barış Soner Uşaklı c9fabb0e1d refactor: add method to error messages 3 years ago
Julian Lam e9ee843b27
fix: CSRF handler to go back to saving in session (#10159) 3 years ago
Julian Lam 2fe53cf849 feat: `GET /api/v3/chats/:roomId/messages` 4 years ago
Julian Lam fe17c94c35 feat: `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` 4 years ago
Julian Lam d62ee84637 feat: `POST /chats/:roomId/users` 4 years ago
Julian Lam 6eea6451d2 feat: `GET /chats/:roomId/users` [breaking] 4 years ago
Julian Lam d5fd098ecf feat: `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` 4 years ago
Julian Lam b292960594 feat: `GET /chats/:roomId/:mid` 4 years ago
Julian Lam f48ed3658a feat: `PUT /chats/:roomId/:mid` 4 years ago
Julian Lam 9a4fd5dc7e feat: `PUT /api/v3/chats/:roomId` 4 years ago
Julian Lam eeffb9d978 feat: `POST /api/v3/chats/:roomId` 4 years ago
Julian Lam 09cf9c7770 feat: `GET /api/v3/chats/:roomId` 4 years ago
Julian Lam 40b4544e70 feat: `POST /api/v3/chats`, chat room creation, plus openAPI docs update 4 years ago
Julian Lam 94bead71fe feat: `GET /api/v3/chats` 4 years ago
Julian Lam 02e878be72 feat: stub code for v3 chats api 4 years ago
Barış Soner Uşaklı 4e1d421722 refactor: remove unused validator 4 years ago
Barış Soner Uşaklı c4042c70de feat: #9506, 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
4 years ago
Julian Lam bc7707aa88 fix: #9484 show user history only to admins and gmods 4 years ago
Barış Soner Uşaklı cbf198fe9b lint: remove unused 4 years ago
Barış Soner Uşaklı cc3f82bc83 breaking: remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') 4 years ago
Barış Soner Uşaklı 65c5504193 fix: 403/400/500 page not generating csrf_token 4 years ago
Barış Soner Uşaklı 3dd681ebce fix: error pages dont have config.csrf_token 4 years ago
Barış Soner Uşaklı 404a877408 test: add missing tests 4 years ago
Julian Lam 01bd8a8694
remove email only login (#10030)
* feat: remove ACP option for email-only logins

* feat: remove email-only login, upgrade script to fix config
4 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
4 years ago
Barış Soner Uşaklı 9245f71a66 fix: search crash 4 years ago
Barış Soner Uşaklı fb363957d1 refactor: tab rules 4 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
4 years ago
Barış Soner Uşaklı e368feef51 refactor: dont expost entire res._locals to client side 4 years ago
Barış Soner Uşaklı 4b738c8cd3 refactor: cleanup info, better cpu usage % 4 years ago
Barış Soner Uşaklı 2e623dd271 feat: #9967, allow dropdowns in navigation 4 years ago
Barış Soner Uşaklı b916e42f40 feat: show number of events per type in acp 4 years ago
Barış Soner Uşaklı 8c67031609 feat: show posts previews if enabled on mouse over 4 years ago
Barış Soner Uşaklı c7e078d495 refactor: dont save partial searches 4 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
4 years ago
Barış Soner Uşaklı 6cfaea06f0 fix: undefined query showing in searches 4 years ago
Barış Soner Uşaklı 0926ae6ecf fix: api session revoke test 4 years ago
Barış Soner Uşaklı da64810a4a fix: crash 4 years ago
Barış Soner Uşaklı a528790615 refactor: typo 4 years ago
Barış Soner Uşaklı ee8e048015 fix: move record to controller 4 years ago
Barış Soner Uşaklı f4cf482a87 feat: show popular searches 4 years ago
Barış Soner Uşaklı 63572c23ce fix: profile edit fields showing translated values 4 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.
4 years ago
Julian Lam 806a1e50d2 feat: utilities login API route now starts an actual login session, if requested 4 years ago
Barış Soner Uşaklı 1d62bd6d7b refactor: log error as well 4 years ago
Barış Soner Uşaklı 73a9ca09c9 refactor: catch errors from buildHeader in error handler 🔥 4 years ago
Barış Soner Uşaklı f7967bdf68 feat: #8053, biweekly digest option 4 years ago
Barış Soner Uşaklı 6da3239230 refactor: less.render already returns promise
rename callback to next to match other controllers
4 years ago
Barış Soner Uşaklı 8e6bd7e913 refactor: show full url on error log 4 years ago
Barış Soner Uşaklı 27e53b42f3 feat: use unread icon in mobile 4 years ago
Barış Soner Uşaklı a0df389021 fix: dont show decimails on auto approva minutes 4 years ago
gasoved ac1b9692f2 fix: handle undefined returnTo on registerAbort 4 years ago
Barış Soner Uşaklı 3605ac811d fix: possible test fix for subfolder redirect 4 years ago
Barış Soner Uşaklı 2add84a568 fix: remove unused translator 4 years ago
Barış Soner Uşaklı 9f0e55ad3e fix: #9819, show same time info for ban 4 years ago
Barış Soner Uşaklı 18252fb9a8 refactor: no regex 4 years ago
Barış Soner Uşaklı 31a6d4b39a fix: for subfolders 4 years ago
Barış Soner Uşaklı 0236ea86ad fix: req.path doesn't have full url 4 years ago
Barış Soner Uşaklı 40c9fca918 fix: #9811, send bodyClass on 403
use helpers.formatApiResponse for /api/v3 routes only
4 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
4 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>
4 years ago
Julian Lam 0a41741b7e refactor: deprecate picture update socket call, new API routes for picture update 4 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ı 72710b8040 fix: #9772, regression from 70a04bc105 4 years ago
Julian Lam 4ac701d747 fix: deprecate userData.showHidden as it is functionally equivalent to userData.canEdit 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
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
Barış Soner Uşaklı 42dbd40253 refactor: remove unused async 4 years ago
Barış Soner Uşaklı 6b6a7d4b8a refactor: remove waterfall 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 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 f53fc1ad0b feat: return generic 404 on invalid confirm code 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 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 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
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
gasoved 97c8569a79 fix: hide private user data in api/v3/users/[uid] 4 years ago
Anton Grigoryev db65360c0d
fix(post-queue): moderatedCids is an array of numbers (#9631) 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ı c92fc19b5c fix: #9619, add group chat filter to /notifications 4 years ago
Barış Soner Uşaklı 46a454f194 feat: add bodyClass to 500 page 4 years ago
Julian Lam f9728aff2c feat: clear reset tokens on successful login 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