How to make a Web Page visible to only logged in users

Hi ,

I’m not sure if there’s something hidden somewhere but I can’t seem to find a way to make a Web Page (Website Module) visible to only logged in users

Any assistance will be greatly appreciated


There doesn’t seem to be a standard setting for this yet (which is quite baffling)… any suggestions on how to achieve this via Custom Script will be highly appreciated


You mean something like an intranet, right?

There is a doctype called “Page”, it could be misused. But I agree, that an intranet function would be a very helpful feature.

Hi @Paul_Frydlewicz

Thanks for your response. I’m not even thinking about an intranet (SharePoint) kind of feature at this stage. Just a simple Web Page or Blog Post that can only be seen by logged in users

ERPNext currently allows you to create Web Pages and Blog Posts from within the Website module. There is however no way of restricting such pages/posts to logged in users which means ALL your content is public! That’s a big no-no!


In v12, we have Social and few people (including me) use it as a little updates and news area for internal users. But it’'ll be deprecated in v13.

We can create a request on Github, or here to have the Social as an app that we can add on to the framework :slight_smile:

Still hoping someone can suggest a way to achieve this pending the time it’s fixed in the core ?


There might be a solution…

You could create a custom doctype and implement a web view for that doctype (there is a checkbox at the very bottom of the doctype form). In this context custom permissions can be set.

I used this for custom website doctypes to implement a product portfolio but I didn’t restrict permissions, because the intention was to make it public. But I remember there were options …

Actually it seems that’s how Website Pages are implemented …

1 Like

A quick search on “web view” lead me to this thread:

Could be a starting point …

1 Like

Thanks @Paul_Frydlewicz

Will check this out and revert here if it works…

Kind regards,

Any solution to this? The non-public non-view also doesn’t work :frowning:

You can use the script function on the webpage.

window.addEventListener("load", (event) => {
   frappe.ready( () => {
     if(frappe.session.user == 'Guest') {
        document.getElementById('').style.display = 'none';