733 Commits (f645a96d18efc9fb014cf75a8f21864becb943ec)

Author SHA1 Message Date
Julian Lam 87bff6cd65 fix: broken test 4 years ago
Julian Lam dda5d42610 fix: restore old behaviour of empty json w/ 401 code in admin middleware 4 years ago
Julian Lam 15e0731dd9 fix: deprecate middleware.isAdmin
Also, handle admin logout timer in middleware.admin.checkPrivileges
4 years ago
Julian Lam 57ed6be78b fix: #8805 define our own name for write API v3 4 years ago
Julian Lam 266d7587b2 refactor: remove usage of middlewares
Specifically, middleware.isAdmin|exposePrivilegeSet|exposePrivileges
4 years ago
Barış Soner Uşaklı a05905f196
performance improvements (#8795)
* perf: nconf/winston/render

cache nconf.get calls
modify middleware.pageView to call next earlier
don't call winston.verbose on every hook see https://github.com/winstonjs/winston/issues/1669
translate header/footer separately and cache results for guests

* fix: copy paste fail

* refactor: style and fire hook only log in dev mode

* fix: cache key, header changes based on template

* perf: change replace

* fix: add missing await

* perf: category

* perf: lodash clone

* perf: remove escapeRegexChars
4 years ago
Julian Lam d68ffea80d feat: send 'Vary' header when ACAO header set 4 years ago
Barış Soner Uşaklı bbafa1b82a Revert "fix: [breaking] send configured config URL as origin if not custom"
This reverts commit 205a10308e.
4 years ago
Julian Lam 205a10308e fix: [breaking] send configured config URL as origin if not custom
This is a breaking change if your install uses multiple URLs to access. You will need to update the Access-Control-Allow-Origin header in ACP > Advanced > Headers to supply all URLs you use to access your site
4 years ago
Julian Lam ff4fcc23b6
Update bundled logos with new branding (#8702)
* feat: updating logo assets, square logos missing still

* fix: squared logo for touch icon and notification fallback

* fix: update link to favicon

* feat: add default touch icon sizes, if one isn't uploaded

Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
4 years ago
Barış Soner Uşaklı 1fd2eba6f2 refactor: async/await
src/cli/manage.js
src/meta/build.js
src/meta/css.js
src/meta/js.js
4 years ago
Julian Lam 1e07886f30 feat: require csrf token if not using bearer token 4 years ago
Barış Soner Uşaklı dc29f4dca2 refactor: switch to using slugify module 4 years ago
Barış Soner Uşaklı fda2aedfd8
feat: #8734, jquery-ui, jquery-form, timeago (#8748)
* feat: #8734, jquery-ui, jquery-form, timeago

get rid of forum/footer.js move that code to app.js & wait for app to load before calling ajaxify.end
make sockets.js a requirejs module
move jquery-ui to node_modules and load via requirejs
move jquery-form to node_modules and load via requirejs
move timeago to node_modules and load via requirejs
only include the css for needed jquery-ui widgets

* feat: keep socket/io global for backwards compat

* refactor: move socket listener to chat
4 years ago
Julian Lam 8ecef7b891 refactor: middleware.assert.* 4 years ago
Julian Lam f870721fca feat(writeapi): file deletion route 4 years ago
Julian Lam 2ec838fc59 feat(writeapi): token generation/delete routes, ACP updates 4 years ago
Julian Lam 414169fdfa feat(writeapi): post delete/restore/purge 4 years ago
Julian Lam 8e89f34dbf fix: bad logic in group assertion middleware 4 years ago
Julian Lam 8e7baac6ef fix(writeapi): calls to profile editing routes 200 even if user DNE 4 years ago
Julian Lam 549ca11056 fix: bug where middlewares seemingly ran in parallel 4 years ago
Julian Lam 4c833d0bf0 feat(writeapi): topic posting and replying 4 years ago
Julian Lam 952dc211dd feat(writeapi): added group joining and deletion 4 years ago
Julian Lam ba345e53e8 feat(writeapi): added POST /api/v1/groups 4 years ago
Julian Lam a1ddc210b2 feat: added DELETE /api/v1/users/:uid and DELETE /api/v1/users 4 years ago
Julian Lam bba2a4638c fix: user creation POST route returns user data, updated openapi spec 4 years ago
Julian Lam 7b6d43bcc8 feat: added checkRequired middleware for API calls 4 years ago
Julian Lam fd67355b03 fix(writeapi): authenticate middleware logic to work better with await 4 years ago
Julian Lam f6433ef2c5 fix(refactor): merging write-api auth middlewares with core middlewares 4 years ago
Julian Lam ec5c48b188 feat: migrating write-api skeleton into core 4 years ago
Barış Soner Uşaklı 46ab2711d4 fix: #8432, add CSP frame-ancestors 5 years ago
Barış Soner Uşaklı 6fc31df033 feat: use const/let 5 years ago
Julian Lam 4b0cb26b34 fix: empty "manage" menu showing in ACP
... if no privileges corresponding to those menu items
are given
5 years ago
Julian Lam cf2f1e956a refactor: changed way middleware was exported 5 years ago
Julian Lam f00595b32d fix: change how admin middlewares are exported 5 years ago
Julian Lam ae68a254d7 fix: one less return, to appease codeclimate 5 years ago
Julian Lam 03bd76dea2 fix: inability to access /admin if not superadmin
There was an odd issue where non-superadmins could not use
the /admin route to access the ACP, even though they had
appropriate access. For whatever reason, it could not
be reliably reproduced on my dev. As it turns out, the
reason was because I was checking the wrong privilege,
and my dev database had this wrong privilege leftover
from the initial development of the ACP admin privileges
feature. Dumb.

Anyhow, that fixes this issue.
5 years ago
Julian Lam 6521e4dac4 Revert "feat: expose global/admin privileges to all routes"
This reverts commit 4737f937ee.
5 years ago
Julian Lam 4737f937ee feat: expose global/admin privileges to all routes
@barisusakli revert if necessary 😬
5 years ago
Barış Soner Uşaklı 6e91885836 feat: use assetBaseUrl instead of hardcoding 5 years ago
Barış Soner Uşaklı 3f01f4a2b8 Revert "feat: load timeago strings client-side"
This reverts commit 558a2d739c.
5 years ago
Julian Lam 558a2d739c feat: load timeago strings client-side
9adaccd036 introduced the ability to
configure an assetBaseUrl, but the timeago strings were still
calling a hardcoded value as it was handled server-side. There's
no need for the strings to be loaded until timeago is initialised.
5 years ago
Barış Soner Uşaklı 3761f05c98 feat: change invalid language codes to default lang 5 years ago
Barış Soner Uşaklı 0cea713691 feat: remove deprecated checkGlobalPrivacySettings 5 years ago
Barış Soner Uşaklı a0da2ba774 feat: remove deprecated isAdmin method 5 years ago
Barış Soner Uşaklı 2355d9d5dd fix: escape navigation item fields, theme:id, category fields 5 years ago
Barış Soner Uşaklı e80379dc0e feat: display stack trace on winston.error 5 years ago
Julian Lam a82e9bd7f6
feat: privileges for Admin Control Panel (#8355)
* feat: acp privileges (WIP)

* fix: restore global privilege hooks

* refactor: using cid 0 in admin privs

* fix: no need for zebrastripe-reset

* feat: manage:categories privilege WIP

* feat: renamed prefix to admin:, settigns and dashboard privs

* fix: nofocus on acp privs group find modal

* refactor: privileges.x.get() to not used hardcoded privs

* fix: crash if unable to get latest version

* feat: setting acp priv

* Revert "fix: crash if unable to get latest version"

This reverts commit afdb235f48eb0072d88de45f3a1e0151281095b3.

* feat: user/privilege acp privs

* fix: category selector in manage/privileges

* fix: guests potentially becoming admins

* fix: bug in setting admin privs

* fix: some last minute things + api docs

* fix: some more last minute fixes
5 years ago
Barış Soner Uşaklı 842b8abb84
feat: add buildHeaderAsync (#8367)
* feat: add buildHeaderAsync

make helphers.notAllowed async

* fix: remove csrf from buildHeader

* fix: remove unused method, use middleware

* fix: /post/pid redirect doesn't need buildHeader

use buildHeaderAsync
5 years ago
Barış Soner Uşaklı dcb85ee7a1
#8344 (#8346)
* feat: wip

* feat: wrap middlewares

* feat: middleware errors

* feat: more middleware changes

* fix: remove unused async

* fix: prevent version errors from blocking acp render

* feat: wrap more middlewares
5 years ago
Julian Lam 023942da7d
refactor: making rendering of header and footer async functions
* refactor: make middleware.admin.renderHeader async

* refactor: making rendering of header and footer async functions

* fix: use app.renderAsync instead of promifying it
5 years ago
Barış Soner Uşaklı 5781a2dc65
feat: fix session mismatch errors by clearing cookie on logout (#8338)
* feat: fix session mismatch errors by clearing cookie on logout

* feat: remove app.upateHeader

ported from 2.0

* feat: handle if user doesn't click button and just refreshes page
5 years ago
Barış Soner Uşaklı 2727f472ed feat: add the data from page into filter:middleware.renderHeader 5 years ago
Julian Lam e327d1247e Revert "fix: #8142 invalid session warning if server-side session destroyed"
This reverts commit 526b3cd9ec.
5 years ago
Barış Soner Uşaklı 4263efa091 feat: don't overwrite req.query.lang if it exists 5 years ago
Julian Lam 526b3cd9ec fix: #8142 invalid session warning if server-side session destroyed
Resolved regression caused by 5a0c7c1497
5 years ago
Barış Soner Uşaklı ecd622fdf5 fix: failing tests @julianlam 5 years ago
Julian Lam 0053e779e8 feat: response:router.page, dep. filter variant 5 years ago
Julian Lam 5a1c6ee7ed fix: response hook logic
After some more thought, a response hook should be checking for
whether headers are sent, and executing (or not executing) the
default logic in that case.

Before, we were relying on hooks to call data.next() to continue
execution, but it makes more sense to have the listener either
send a response or not, and handle the behaviour afterwards.
5 years ago
Barış Soner Uşaklı 8e23dec84b fix: lint 5 years ago
Barış Soner Uşaklı 23571224b5 feat: add parent cids to body class 5 years ago
Julian Lam f0db240a1d fix: #8184 global mods unable to revoke other user sessions 5 years ago
Julian Lam eddbd86837 fix: tweak to session validation in addHeaders 5 years ago
Barış Soner Uşaklı 630f5d5b85 fix: only call clearCookie for logged in users 5 years ago
Barış Soner Uşaklı 5a0c7c1497 fix: register 5 years ago
Julian Lam d6e3f3f058
fix: #8142, broken site if no server-side session (#8148)
* fix: #8142, broken site if no server-side session

During the `addHeader` middleware, a check is now done to see if
`req.session.meta` is present. This value is only present if the user
has a valid server-side session.  If it is missing, then it is probably
safe to assume that the server-side session was deleted (either
intentionally or accidentally). In that scenario, the client-side cookie
should be cleared.

Also, there was an issue where the sessionRefresh flag was never cleared
after a successful login, so that was fixed too.

* feat: exported method to get cookie config

* fix: don't clear cookie if cookie is being set

* fix: socket.io tests

Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
5 years ago
Julian Lam 0885ec6858 fix: #8144 pluginHooks in maintenance mode middleware 5 years ago
Barış Soner Uşaklı a227cbe328 refactor: async/await middleware 5 years ago
Opliko 0efe27b1f2 fix: make _csrf a secure cookie if the website is using https (#8045)
* Make _csrf a secure cookie if the website is using https

* fix style for TravsCI

* Add `url_parsed` to databasemock
5 years ago
Baris Usakli cec0079573 refactor: shorter returns 5 years ago
Baris Usakli efd1e88bbf feat: convert middleware.isAdmin to async/await 5 years ago
Baris Usakli 1eca5b3dae fix: show login fields if user has local password 5 years ago
Julian Lam cf7e0cfd2d
feat: no more session cookie for guests (#7982)
* feat: no more session cookie for guests

* fix(tests): added additional tests and fixed the broken test
5 years ago
Opliko b9583ed838 Add privilege for accessing user information (#7859)
* Add view users info global privilege

* Show user ip only to global mods and admins

* fix missing comma

* Hide link for users without correct privilege

* move getting privilege information to getAllData

* Hide the link from Global Moderators as well

* Give Global Moderator view:users:info privilege

* Restrict ip in post menu to view:users:info

* add some trailing commas....

* Add privilege to categories test

* Add group privilege to categories test

* add upgrade script

* fix style for TravisCI

* more styling - change spaces to tabs

* some more styling fixes (hopefully final one)

* fix style for Travis CI

* hide ip in chat messages

* Don't show even hidden ips on user profile page
6 years ago
Barış Soner Uşaklı 4eaa630b1c refactor: async/await controllers/api 6 years ago
Julian Lam 29f96b199c fix(style): requiring parens in block bodies 6 years ago
Julian Lam 0921230976 fix(style): updated code to follow new eslint recommendations
Squashed commit of the following:

commit f9ce878b269b3568f0d649309aae1af4dcfdfeef
Author: Julian Lam <julian@nodebb.org>
Date:   Tue Aug 13 14:30:46 2019 -0400

    fix(style): updated code to follow new eslint recommendations

commit 80dd370e413f22badb96ff2138e7991dfff6d836
Author: Julian Lam <julian@nodebb.org>
Date:   Tue Aug 13 14:14:58 2019 -0400

    fix(deps): update dependency sitemap to v4

    Squashed commit of the following:

    commit f4dd9cabb21e26fdc21f8413be822ea7c64251f8
    Author: Julian Lam <julian@nodebb.org>
    Date:   Tue Aug 13 11:33:05 2019 -0400

        fix: resolved breaking changes from sitemap v4 upgrade

    commit 9043415ee16dcc27a8dcc2e4479d1bc5e2d1b60e
    Merge: e3352b272 72590b346
    Author: Julian Lam <julian@nodebb.org>
    Date:   Tue Aug 13 11:09:55 2019 -0400

        Merge branch 'master' into renovate/sitemap-4.x

    commit e3352b272eb9400bdb00774973181397803765e4
    Author: Renovate Bot <bot@renovateapp.com>
    Date:   Mon Aug 12 07:59:05 2019 +0000

        fix(deps): update dependency sitemap to v4

commit 8e3c0cdcae22acc32d352be8bb72d60e7502dbc5
Author: Renovate Bot <bot@renovateapp.com>
Date:   Fri Aug 9 00:49:51 2019 +0000

    fix(deps): update dependency commander to v3

commit 2104449d38818f2fa4d44b3a58a0a168781acbfb
Author: Renovate Bot <bot@renovateapp.com>
Date:   Tue Aug 13 15:00:27 2019 +0000

    fix(deps): update dependency mongodb to v3.3.0

commit d2937f446a21131c070ae5d0ff33d67cfe465b8c
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Tue Aug 13 10:36:48 2019 -0400

    feat: async/await admin/controllers

commit 1b97e8b199f960dc24e5722702f27499ae049914
Author: Misty (Bot) <deploy@nodebb.org>
Date:   Tue Aug 13 09:28:39 2019 +0000

    Latest translations and fallbacks

commit 69a48957a2f0d23c4d194b664bda3a0431179c01
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Mon Aug 12 21:56:09 2019 -0400

    feat: async/await

commit b9b2a7e593a452de4bef6d0ab6abe368a3bdb8dd
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Mon Aug 12 20:58:29 2019 -0400

    feat: async/await refactor

    controllers/accounts

commit a8d43a175974a0c8ae3dc132bf51a7ed9a4c6305
Author: Baris Usakli <barisusakli@gmail.com>
Date:   Mon Aug 12 14:49:40 2019 -0400

    feat: async/await controllers/accounts

commit 2f25aae57bf9dbe98d655276770e56bed9ec023b
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Sun Aug 11 23:09:50 2019 -0400

    fix: #7831, fix pagination

    convert to async/await

commit c9e83f2374572264855a04156278eef256b0a20c
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Sun Aug 11 00:14:35 2019 -0400

    fix: remove empty line

commit 30be91b26c4dd7583412c4e8d56e9c1688e48a44
Author: Barış Soner Uşaklı <barisusakli@gmail.com>
Date:   Sun Aug 11 00:13:41 2019 -0400

    fix: remove useless catchs and empty line

commit 2e4a71c0b6104738f15ffbfe3246105b922fdfb3
Author: Renovate Bot <bot@renovateapp.com>
Date:   Sat Aug 10 06:51:50 2019 +0000

    chore(deps): update dependency eslint-config-airbnb-base to v14
6 years ago
Barış Soner Uşaklı 4b843ba16f fix: #7567, allow invite and approval at the same time 6 years ago
Baris Usakli 63e5d383d9 fix: #7623, wait for lastonline to update on /users 6 years ago
Julian Lam b70e03a7b0 fix: broken test for meta tags on ajaxify 6 years ago
Julian Lam a41769e61c
feat: update meta tags on ajaxify (#7580), fixes #7544
* feat: wip -- refresh meta tags on ajaxify

* feat: wrapped up meta tags update on ajaxify feature

* fix: removed commented-out line

* fix: removed another commented-out line
6 years ago
Baris Usakli cf5aeace6b feat: closes #7583 6 years ago
Aziz Khoury 3fbb6faf28 feat: update unban logic/invocation and refactor User.bans module
* auto unban when User.getUsersFields is called and the user is banned but has expired

* cleanups and removal of expiry_readable

* expiry_readable make an alias for backward compatibility

* User.bans.func vs User.*ban*Func

* console.log cleanups, plus todo message added

* use code util.deprecate

* fix: remove ununsed winston require
6 years ago
Baris Usakli 8f55ab1340 fix: #7494 6 years ago
Julian Lam d2cfe6b946
Moved onSuccessfulLogin call from plugins to core, + auth verification hook (#7416)
* fix: #7412, calling controllers.onSuccessfulLogin in core

* feat: added plugin hook for auth validation
6 years ago
Julian Lam 949b10f132 fix: no relative path needed in req.session.returnTo
re: julianlam/nodebb-plugin-session-sharing#73
6 years ago
Barış Soner Uşaklı c72da5595a fix: #6806
3 new global privileges
view:users
view:tags
view:groups
6 years ago
Julian Lam a23854e3ff feat: new hook type: `response`
Used in authentication middleware. Instead of firing an action
hook, it now fires a response hook.

Response hooks are invoked serially, and if headers are sent from
one of the hook listeners, all subsequent hook methods are not
called.

Response hooks should only be used in situations where res.send
(or other like methods) are invoked. Existing plugin hooks that
pass in res purely for data retrieval purposes have not changed).

fixes nodebb/nodebb-plugin-write-api#101
6 years ago
Julian Lam f122fc44d0 fix: #7266 body does not contain skin class
A regression was identified where the skin was not shown in the
body class. This resolves the issue and adds a workaround so that
the fix does not become breaking for custom themes.
6 years ago
Barış Soner Uşaklı ed5d2d6d15 feat: get rid of disk access 6 years ago
Julian Lam c831ff0de3
fix: removal of timeago fallback middleware (#7259)
* fix: removal of timeago fallback middleware

Instead of loading English fallback on missing language, we opt
to not send a script tag for a missing language to begin with.

Timeago already loads with English as default, so it will just
continue to use English.

* fix: check userLang against supported language codes

* fix: cleaned up code as per @pitaj

* fix: added comments

* fix: more fixes as per @pitaj

* feat: added addl. test for timeago locales, fixed broken test
6 years ago
Julian Lam d81e0a5f5b fix: #7146 Better RTL handling on (de-)authentication
- RTL is applied (or unapplied) on login and logout depending on
  user language/guest-detected language.
- config is automatically saved into res.locals.config whenever
  loadConfig is called
- On login/logout, buildHeader is called instead of getting config
- On logout, req.uid is deleted instead of set to 0
6 years ago
Barış Soner Uşaklı b2a74b4172 fix: remove cache 6 years ago
Barış Soner Uşaklı 0cb9bba4da feat: header 6 years ago
Barış Soner Uşaklı 60390c01f1 fix: loop 6 years ago
Barış Soner Uşaklı f88db22ca2 feat: give the rest of the middlewares names 6 years ago
Barış Soner Uşaklı fdfbcc6efe feat: give names to more middlewares 6 years ago
Barış Soner Uşaklı 53793e1603 feat: give names to middlewares 6 years ago
Barış Soner Uşaklı 4650a76036 fix: #7124 6 years ago
Barış Soner Uşaklı 9f5062682d fix: unread badge
- only increase unread badge if topic or category is watched
- fix logic for "there are new posts/topics" on /unread and /recent
6 years ago