Commit Graph

1182 Commits

Author SHA1 Message Date
Julian Lam
645d647248 feat: wip, better digest handling (+ eventual digest resend logic) (#7995)
* feat: wip, better digest handling (+ eventual digest resend logic)

- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid

* feat: continuing work on digest tools

- Added ACP page to view digest settings and delivery times per user

* feat: added paginator and stub buttons for resending digest

* feat: wrapping up digest revamp

- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval

* fix: minor cleanup

* fix: #8010 and some style suggestions from baris

* fix: resolve confusing comment
2019-11-02 13:11:02 -04:00
Opliko
df1efe5f96 feat: Implement WICG change-password-url (#7072) (#7990)
* feat:  Implement WICG change-password-url (#7072)

* fix style for TravisCI
2019-10-22 12:16:09 -04:00
Barış Soner Uşaklı
873ec51978 fix: crash in feed 2019-09-21 00:27:55 -04:00
Barış Soner Uşaklı
ec3b5dd95a refactor: async/await routes/feeds 2019-09-16 23:05:59 -04:00
Julian Lam
52a2e5d61d fix: #7816, adding GDPR and TOU interstitials earlier on route reloading
A use-case was presented that called for a theme to disable the
registration interstitials. However, the plugin hooks were always
fired first, and so the core interstitials could not be removed
at that time because they hadn't been added yet.

This change moved the interstitial adding to the earliest point
possible, right after plugins.loadedHooks is emptied in preparation
for plugin initialisation.
2019-08-02 12:59:36 -04:00
Barış Soner Uşaklı
0d047f4eb9 feat: #7743, webserver 2019-07-22 18:16:18 -04:00
Barış Soner Uşaklı
805dcd7ca2 Async refactor in place (#7736)
* feat: allow both callback&and await

* feat: ignore async key

* feat: callbackify and promisify in same file

* Revert "feat: callbackify and promisify in same file"

This reverts commit cea206a9b8.

* feat: no need to store .callbackify

* feat: change getTopics to async

* feat: remove .async

* fix: byScore

* feat: rewrite topics/index and social with async/await

* fix: rewrite topics/data.js

fix issue with async.waterfall, only pass result if its not undefined

* feat: add callbackify to redis/psql

* feat: psql use await

* fix: redis 🌋

* feat: less returns

* feat: more await rewrite

* fix: redis tests

* feat: convert sortedSetAdd

rewrite psql transaction to async/await

* feat: 🐶

* feat: test

* feat: log client and query

* feat: log bind

* feat: more logs

* feat: more logs

* feat: check perform

* feat: dont callbackify transaction

* feat: remove logs

* fix: main functions

* feat: more logs

* fix: increment

* fix: rename

* feat: remove cls

* fix: remove console.log

* feat: add deprecation message to .async usage

* feat: update more dbal methods

* fix: redis :voodoo:

* feat:  fix redis zrem, convert setObject

* feat: upgrade getObject methods

* fix: psql getObjectField

* fix: redis tests

* feat: getObjectKeys

* feat: getObjectValues

* feat: isObjectField

* fix: add missing return

* feat: delObjectField

* feat: incrObjectField

* fix: add missing await

* feat: remove exposed helpers

* feat: list methods

* feat: flush/empty

* feat: delete

* fix: redis delete all

* feat: get/set

* feat: incr/rename

* feat: type

* feat: expire

* feat: setAdd

* feat: setRemove

* feat: isSetMember

* feat: getSetMembers

* feat: setCount, setRemoveRandom

* feat: zcard,zcount

* feat: sortedSetRank

* feat: isSortedSetMember

* feat: zincrby

* feat: sortedSetLex

* feat: processSortedSet

* fix: add mising await

* feat: debug psql

* fix: psql test

* fix: test

* fix: another test

* fix: test fix

* fix: psql tests

* feat: remove logs

* feat: user arrow func

use builtin async promises

* feat: topic bookmarks

* feat: topic.delete

* feat: topic.restore

* feat: topics.purge

* feat: merge

* feat: suggested

* feat: topics/user.js

* feat: topics modules

* feat: topics/follow

* fix: deprecation msg

* feat: fork

* feat: topics/posts

* feat: sorted/recent

* feat: topic/teaser

* feat: topics/tools

* feat: topics/unread

* feat: add back node versions

disable deprecation notice
wrap async controllers in try/catch

* feat: use db directly

* feat: promisify in place

* fix: redis/psql

* feat: deprecation message

logs for psql

* feat: more logs

* feat: more logs

* feat: logs again

* feat: more logs

* fix: call release

* feat: restore travis, remove logs

* fix: loops

* feat: remove .async. usage
2019-07-09 12:46:49 -04:00
Julian Lam
a0c0ef1ba4 feat: ACP analytics API route (#7725)
* feat: added API route for retrieving analytics via REST API

* feat: sets is now optional, can pass in multiple sets

* fix: moved expand and added json button to panel header

* fix: matching api params to socket method

* fix: update json api button url on graph change

* fix: updated default counts based on passed in units
2019-06-28 14:59:55 -04:00
Barış Soner Uşaklı
a251032f02 fix: typo 2019-06-14 20:44:15 -04:00
Barış Soner Uşaklı
3b0459a0a5 fix: do not prevent nbb from starting
if a plugin returns error for filter:auth.init
2019-05-21 21:34:42 -04:00
Andrew Rodrigues
740388492f fix: #7545 2019-04-16 17:51:52 -04:00
Andrew Rodrigues
ddffc904f4 feat: allow file uploading on registration interstitial 2019-04-15 12:33:57 -04:00
Baris Usakli
8f55ab1340 fix: #7494 2019-03-26 12:24:28 -04:00
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
2019-03-13 12:38:30 -04:00
Julian Lam
d722f3b8b6 fix: mounting of all-route middlewares to router instead of app
related to julianlam/nodebb-plugin-session-sharing#73
These three lines haven't changed in two years, but it makes more
sense for them to be called against the relative path router,
otherwise req.originalUrl contains the relative path, which is
not necessary.
2019-02-19 15:49:34 -05:00
Barış Soner Uşaklı
c72da5595a fix: #6806
3 new global privileges
view:users
view:tags
view:groups
2019-02-05 12:08:18 -05:00
Barış Soner Uşaklı
5353960ae7 fix: #7316 2019-01-29 13:11:45 -05:00
Julian Lam
059a4be204 feat: explicit handling of SSO success and failure 2019-01-21 15:29:32 -05:00
Julian Lam
2b9322e1c2 feat: additional options for SSO plugins
+checkState property, pass Boolean false to skip nonce checking
+callbackMethod, default 'get', you can pass in 'post', etc.
2019-01-18 16:16:04 -05:00
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
2019-01-17 12:25:53 -05:00
Julian Lam
70a87d4399 feat: support for one-click unsubscribe from email clients (#7203)
* feat: sending notifs via ACP creates real notification

re: #7202

* feat: basic integration for one-click unsubscription #7202

* feat: tests for #7202 + bugfix

* feat: added and organized digest unsub tests

closes #7202
2019-01-08 13:56:11 -05:00
Barış Soner Uşaklı
d31684e8b8 fix: #7131 2018-12-17 19:03:33 -05:00
Barış Soner Uşaklı
ae0fe5e880 feat: more naming 2018-12-17 16:56:38 -05:00
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
2018-12-15 16:38:30 -05:00
Barış Soner Uşaklı
99e0895e99 fix: move the check to get methods
all .post methods will have csrf
2018-12-14 23:38:05 -05:00
Julian Lam
4fba1492c1 feat: added new middleware authenticateOrGuest 2018-12-07 13:31:31 -05:00
Julian Lam
eeaee8ccef fix: not calling authenticate middleware on resource direct access
routes
2018-12-07 11:56:44 -05:00
Julian Lam
a07d9898df fix: #7071 buildSkinAsset won't rebuild continuously 2018-12-06 16:10:24 -05:00
Barış Soner Uşaklı
a63ddbe2aa fix: #7040
if category doesn't exist return null and 404
2018-12-01 17:15:38 -05:00
Barış Soner Uşaklı
cb7c2d8c28 fix: add missing render function 2018-12-01 04:37:55 -05:00
Barış Soner Uşaklı
1f918ca8f8 Home route (#7039)
* fix: WIP home fix

* remove console.log

* fix: #6949

on redis run all tests in subfolder /forum
fix URI errors
fix sping/ping
2018-11-30 21:35:57 -05:00
Baris Usakli
8808a03307 fix: #7033 2018-11-30 14:39:35 -05:00
Peter Jaszkowiak
ba619c7ec8 style(eslint): match operator-linebreak preferences 2018-11-30 13:38:59 -05:00
Barış Soner Uşaklı
4b486a808e fix custom home 2018-11-28 15:58:52 -05:00
Barış Soner Uşaklı
e17c4b2766 uid fixes 2018-11-17 22:31:39 -05:00
Barış Soner Uşaklı
f1a6d39537 dont crash if a loginStrategies is undefined 2018-11-16 14:42:57 -05:00
Baris Usakli
d0b67b00db closes #6949 2018-11-13 16:19:30 -05:00
Julian Lam
f96208a0c8 fix(uploads): ugly filenames on uploaded asset downloading
During regular processing, a timestamp is prepended to the filename
for any uploaded files. We don't want this to be part of the filename
if an end-user elects to download the file.

This commit adds a middleware to strip out that portion of the
basename and adds the appropriate Content-Disposition header for
files in /uploads/files

Fixes #6953
2018-11-13 13:56:33 -05:00
renovate[bot]
64b9dabff8 chore(deps): update dependency eslint-config-airbnb-base to v13 (#6599)
* chore(deps): update dependency eslint-config-airbnb-base to v13

* chore: #6599, linting 😬
2018-11-07 15:53:14 -05:00
Julian Lam
501b3a79ca Refactor skins to be built on server-side (#6849)
* WIP

* using bootswatch from npm instead of bootswatch CDN url

* feat: on-demand client css building for skins

* added ability for client-side to select a skin

* updated loading and saving logic of bootstrapSkin on client side user settings

* fix: broken test for #6849
2018-11-07 13:44:35 -05:00
Barış Soner Uşaklı
412358b070 #6903 2018-10-31 19:12:33 -04:00
Barış Soner Uşaklı
67d3b29204 #6903 2018-10-31 16:22:40 -04:00
Barış Soner Uşaklı
f3a679e268 remove parseInts 2018-10-25 17:02:59 -04:00
Barış Soner Uşaklı
ebd4b19a65 moved req.user up 2018-10-24 21:22:12 -04:00
Barış Soner Uşaklı
ab7657d445 closes #6854 2018-10-22 07:30:48 -04:00
Barış Soner Uşaklı
ac39112271 remove more parseInts 2018-10-21 19:33:46 -04:00
Barış Soner Uşaklı
9c022afae1 Parse int (#6853)
* Store config fields as JSON in the db

Fewer parseInts

* Remove unnecessary parseInts

* remove some dupe code add tests

* remove console.log

* remove more parseInts

* WIP: read meta.configs defaults from defaults.json

remove more parseInts

* more work

* add log for failing test

* update admin pwd

* fix tests, dont require posts/cache before configs are initialized

* handle saves

* Test boolean conditions

* remove more parseInts

* Fix boolean values

* remove lots more parseInts

* removed json parsing

* renamed var to number

* categories dont have timestamp
2018-10-21 16:47:51 -04:00
Barış Soner Uşaklı
60c58870af remove hotswap (#6835) 2018-10-21 16:39:57 -04:00
Barış Soner Uşaklı
92744a7200 closes #6852 2018-10-20 18:23:12 -04:00
André Zanghelini
523a2dc54c Add settings page to control watched categories (#6648)
* Add settings page to control watched categories

* Fix passing undefined to pushUnreadCount
2018-10-05 13:00:18 -04:00