Do I need to call user.isAdministrator on my plugin's admin page?

NodeBB Development

Suggested Topics


  • 0 Votes
    3 Posts
    309 Views

    I found a good way to get the user list out of mongodb. In case anyone need it:

    async function doMongoDb() { const { MongoClient } = require("mongodb"); const username = encodeURIComponent("admin"); const password = encodeURIComponent("mypassword"); const clusterUrl = "localhost:27017"; const authMechanism = "DEFAULT"; const uri = `mongodb://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const database = client.db("nodebb"); const objects = database.collection("objects"); // get all user const query = { _key: /^user:\d+$/ }; // select fields we want to see const options = { projection: { _id: 0, username: true, _id: false, email: true, "email:confirmed": true, joindate: true, fullname: true }, }; const cursor = objects.find(query, options); if ((await cursor.count()) === 0) { console.log("No user found!"); } // iterate over the users await cursor.forEach(user => { if (user["email:confirmed"] == 1 ) { console.dir(user); } }); } finally { // make sure we close the connection await client.close(); } } // --------------------------------------------------- function init() { try { doMongoDb(); } catch(e) { console.log(e); } } // --------------------------------------------------- init();
  • 0 Votes
    3 Posts
    970 Views

    Cool answer.. It worked. Thanks.

  • 1 Votes
    6 Posts
    1k Views

    It worked. Thanks a lot!

  • 0 Votes
    6 Posts
    2k Views

    Sure.

    library.js

    Plugin = module.exports; var categories = require.main.require('./src/categories'); // init hook Plugin.init = function (data, callback) { var router = data.router; var middleware = data.middleware; // Create route to render the template to. router.get('/example-categories', middleware.buildHeader, renderExampleCategories); router.get('/api/example-categories', renderExampleCategories); function renderExampleCategories(req, res, next) { // Get all the visible categories. categories.getCategoriesByPrivilege('cid:0:children', req.uid, 'find', function(err, categoryData) { if (err) return next(err); // Put the categories in a tree format. categories.flattenCategories([], categoryData); // Send the data to the template. `example-categories.tpl` res.render('example-categories', {categories: categoryData}); }); } };

    example-categories.tpl

    <!-- BEGIN categories --> <a href="{config.relative_path}/category/{categories.slug}" itemprop="url">{categories.name}</a> <br> <!-- BEGIN categories.children --> - <a href="{config.relative_path}/category/{categories.children.slug}" itemprop="url">{categories.children.name}</a> <br> <!-- END categories.children --> <!-- END categories -->

    Should give you a list like this

  • 0 Votes
    1 Posts
    967 Views

    In my topic.tpl I made some changes using @first to separate first post in topic from others. It worked, but there is now next problem. When i create a new post it doesn't show it instantly, I have to refresh page to see that post.

    This is how my topic.tpl looks now http://pastebin.com/jYNQ1WVr

    Also, I noticed this http://screencast.com/t/jESEIi9GiY . Instead of just creating one more <li> in .otherPosts div it creates another .firstPost and .otherPosts div.

    I think that maybe I made some mistake with using @fist but I can't figure out what is it. Someone help? 🙂