2456 Commits (e0149462b3f4e7c843d89701ad9edd2e744d7593)

Author SHA1 Message Date
Barış Soner Uşaklı aba420a3f3 feat: setting to show signatures only once in topics, closes #10071 3 years ago
Barış Soner Uşaklı 14c79763dd refactor: use group.slug on acp group urls closes #8277 3 years ago
Barış Soner Uşaklı 33458701c1 test: passport0.6 (#10638)
* test: passport0.6

* test: make logout async, fix lint

* test: keepSessionInfo flag

* revert: csrf load
3 years ago
Opliko a9bbb586fc
feat: allow plugins to add to admin cache list (#10833)
* feat: allow plugins to add to admin cache list

resolves  #10820

plugins will have to use `filter:admin.cache.get` hook and just add their own cache to the object there.

* feat: add dump to ttlCache and expose properties

* feat: also expose properties under their current names

* feat: display TTL if set
3 years ago
Barış Soner Uşaklı 6b2a6f9006
test: passport0.6 (#10638)
* test: passport0.6

* test: make logout async, fix lint

* test: keepSessionInfo flag

* revert: csrf load
3 years ago
Julian Lam c07d595662
Update to lru-cache@^7 (#10815)
* chore(deps): bump lru-cache from 6.0.0 to 7.13.1 in /install

Bumps [lru-cache](https://github.com/isaacs/node-lru-cache) from 6.0.0 to 7.13.1.
- [Release notes](https://github.com/isaacs/node-lru-cache/releases)
- [Changelog](https://github.com/isaacs/node-lru-cache/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-lru-cache/compare/v6.0.0...v7.13.1)

---
updated-dependencies:
- dependency-name: lru-cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(lru-cache): remove unneeded `length` params for cache creation, as `maxSize` was not used in those init calls, also renamed some methods to match new method names in lru-cache [breaking]

Added deprecation notices for old params

* fix: replace three direct calls to lru-cache with call to cacheCreate, moved cache creation call in uploads to run on first init as config is not populated at lib init

* test: move configs init above cache reset calls in databasemock

* move some more code above cache clear

* refactor: remove unused

* test: lru

* test: more debug

* test: on more test

* use await helpers.uploadFile

* fix: tests remove logs

* fix: acp cache page

* fix: add in one more guard again cache instantiation with `length` prop but no `maxSize` prop

* fix(deps): bump markdown

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
3 years ago
Barış Soner Uşaklı 7e8ad785f4 fix: don't crash if req.body.username is not string
Error: req.body.username.trim is not a function
File: authenticationController.login (/usr/src/app/src/controllers/authentication.js:247:40)
3 years ago
Julian Lam cba9047f67 fix: #10805, hide unconfirmed emails from user data retrieval methods 3 years ago
Opliko 23cb67a112 feat: Allow defining active plugins in config (#10767)
* Revert "Revert "feat: cross origin opener policy options (#10710)""

This reverts commit 46050ace1a.

* Revert "Revert "chore(i18n): fallback strings for new resources: nodebb.admin-settings-advanced""

This reverts commit 9f291c07d3.

* feat: closes #10719, don't trim children if category is marked section

* feat: fire hook to allow plugins to filter the pids returned in a user profile

/cc julianlam/nodebb-plugin-support-forum#14

* fix: use `user.hidePrivateData();` more consistently across user retrieval endpoints

* feat: Allow defining active plugins in config

resolves #10766

* fix: assign the db result to files properly

* test: add tests with plugins in config

* feat: better theme change handling

* feat: add visual indication that plugins can't be activated

* test: correct hooks

* test: fix test definitions

* test: remove instead of resetting nconf to avoid affecting other tests

* test: ... I forgot how nconf worked

* fix: remove negation

* docs: improve wording of error message

* feat: reduce code duplication

* style: remove a redundant space

* fix: remove unused imports

* fix: use nconf instead of requiring config.json

* fix: await...

* fix: second missed await

* fix: move back from getActiveIds to getActive

* fix: use paths again?

* fix: typo

* fix: move require into the function

* fix: forgot to change back to getActive

* test: getActive returns only id

* test: accedently commented out some stuff

* feat: added note to top of plugins page if \!canChangeState

Co-authored-by: Julian Lam <julian@nodebb.org>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
3 years ago
Julian Lam 0529f2fb5d fix: use `user.hidePrivateData();` more consistently across user retrieval endpoints 3 years ago
Julian Lam c26be43ac5 feat: fire hook to allow plugins to filter the pids returned in a user profile
/cc julianlam/nodebb-plugin-support-forum#14
3 years ago
Barış Soner Uşaklı 7e80cc1033 feat: closes #10719, don't trim children if category is marked section 3 years ago
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` 3 years ago
Julian Lam fe17c94c35 feat: `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` 3 years ago
Julian Lam d62ee84637 feat: `POST /chats/:roomId/users` 3 years ago
Julian Lam 6eea6451d2 feat: `GET /chats/:roomId/users` [breaking] 3 years ago
Julian Lam d5fd098ecf feat: `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` 3 years ago
Julian Lam b292960594 feat: `GET /chats/:roomId/:mid` 3 years ago
Julian Lam f48ed3658a feat: `PUT /chats/:roomId/:mid` 3 years ago
Julian Lam 9a4fd5dc7e feat: `PUT /api/v3/chats/:roomId` 3 years ago
Julian Lam eeffb9d978 feat: `POST /api/v3/chats/:roomId` 3 years ago
Julian Lam 09cf9c7770 feat: `GET /api/v3/chats/:roomId` 3 years ago
Julian Lam 40b4544e70 feat: `POST /api/v3/chats`, chat room creation, plus openAPI docs update 3 years ago
Julian Lam 94bead71fe feat: `GET /api/v3/chats` 3 years ago
Julian Lam 02e878be72 feat: stub code for v3 chats api 3 years ago
Barış Soner Uşaklı 4e1d421722 refactor: remove unused validator 3 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
3 years ago
Julian Lam bc7707aa88 fix: #9484 show user history only to admins and gmods 3 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