Title: Intranet &amp; Private Site &#8211; All-In-One Intranet
Author: Syed Balkhi
Published: <strong>July 3, 2014</strong>
Last modified: July 10, 2026

---

Search plugins

![](https://ps.w.org/all-in-one-intranet/assets/banner-772x250.png?rev=942738)

![](https://ps.w.org/all-in-one-intranet/assets/icon-256x256.png?rev=978743)

# Intranet & Private Site – All-In-One Intranet

 By [Syed Balkhi](https://profiles.wordpress.org/smub/)

[Download](https://downloads.wordpress.org/plugin/all-in-one-intranet.1.9.1.zip)

 * [Details](https://wordpress.org/plugins/all-in-one-intranet/#description)
 * [Reviews](https://wordpress.org/plugins/all-in-one-intranet/#reviews)
 *  [Installation](https://wordpress.org/plugins/all-in-one-intranet/#installation)
 * [Development](https://wordpress.org/plugins/all-in-one-intranet/#developers)

 [Support](https://wordpress.org/support/plugin/all-in-one-intranet/)

## Description

WordPress is one of the most popular platforms for building corporate intranets 
and private company websites. The problem is that WordPress was designed for public-
facing sites. Making it work as a private intranet typically requires installing
multiple plugins, configuring each one separately, and hoping they all play nicely
together.

All-In-One Intranet solves this by giving you everything you need in a single plugin
to turn your WordPress site into a fully private intranet. Enable privacy with one
checkbox, set up auto-logout to protect sensitive information, configure where users
land after login, and manage multisite access controls – all from one settings page.

Whether you are building a corporate intranet, a private knowledge base, a restricted
client portal, or an internal communications hub, this plugin handles the foundational
privacy and access control so you can focus on your content.

#### What is an Intranet?

An intranet is a private website or network used internally by an organization. 
Unlike a public website, an intranet is only accessible to authorized users – typically
employees, contractors, or specific team members.

Common uses for a WordPress intranet include:

 * Internal company communications and announcements
 * Employee handbooks, policies, and procedures
 * Knowledge bases and documentation wikis
 * Project collaboration and team coordination
 * HR portals for onboarding and training materials
 * Client portals with restricted access to project files

WordPress is well suited for all of these because of its familiar editing interface,
extensive plugin ecosystem, and flexible user role system. All-In-One Intranet provides
the access control layer that makes it all work.

#### Features

All-In-One Intranet includes five core features designed to cover the most common
intranet requirements:

#### One-Click Private Site

Enable the “Force site to be entirely private” checkbox, and your entire WordPress
site becomes restricted to logged-in users only. Anyone who is not logged in gets
redirected to the WordPress login page automatically.

This single setting handles multiple layers of privacy at once:

 * **Page and post access** – all frontend content requires authentication
 * **REST API protection** – unauthenticated REST API requests are blocked with 
   a 401 error, preventing data leaks through the API
 * **XML-RPC blocking** – XML-RPC is disabled entirely when privacy is active, closing
   another potential access vector
 * **Search engine blocking** – the robots.txt file is automatically updated to 
   disallow all crawling, keeping your private content out of search indexes
 * **Pingback suppression** – outgoing pingbacks and trackbacks are disabled so 
   your private site does not announce itself to external services
 * **Feed protection** – RSS, Atom, and comment feeds require authentication, so
   protected posts and comments cannot be read through `/feed/` or crafted feed 
   URLs
 * **Comment and trackback blocking** – unauthenticated visitors cannot post comments
   or trackbacks to protected content through `wp-comments-post.php` or `wp-trackback.
   php`
 * **Admin endpoint gating** – the `admin-ajax.php` and `admin-post.php` handlers
   require a valid login, so public “nopriv” actions registered by your theme or
   other plugins do not run for logged-out visitors
 * **Entry-point coverage** – WordPress files that load the site outside the normal
   page render, such as `wp-links-opml.php` (the blogroll and OPML export) and `
   wp-activate.php`, are sealed so they cannot leak post content, feeds, your site
   title, or the WordPress version number
 * **Slug enumeration prevention** – WordPress’s canonical redirect no longer reveals
   the slugs of private posts to unauthenticated visitors on pretty permalinks
 * **Role and membership enforcement** – the REST API and comment gates apply the
   same role and sub-site membership checks as the rest of the site, so a logged-
   in user with no role, or who is not a member of the current sub-site, cannot 
   read API content or post comments they would otherwise be blocked from

The plugin also monitors your WordPress registration settings. If “Anyone can register”
is enabled on a single site, or if open registration is allowed on a multisite network,
the plugin displays a warning on the settings page so you can fix it before it becomes
a problem.

#### Auto-Logout for Inactive Users

Shared workstations and forgotten browser tabs are a real security risk for intranets.
The auto-logout feature lets you set a maximum idle time – in minutes, hours, or
days – after which users are automatically logged out.

The plugin tracks each user’s last activity timestamp. On every page load, it checks
whether the configured idle time has been exceeded. If a user has been inactive 
for too long, they are logged out immediately and redirected back to the page they
were viewing, which triggers the login wall if the site is private.

This protects sensitive company information without requiring users to remember 
to log out manually. Set it to 30 minutes for high-security environments, a few 
hours for typical office use, or leave it blank to disable the feature entirely.

#### Custom Login Redirect

By default, WordPress sends users to the dashboard after they log in. For an intranet,
this is not useful – your team is logging in to read content, not to manage the 
site.

The login redirect feature lets you set any URL on your site as the post-login landing
page. Point it to your company homepage, a news feed, or a team dashboard so users
see relevant content right away.

This redirect only applies when users log in directly through the standard WordPress
login page. If a user tries to access a specific page and gets redirected to log
in first, they will be sent back to that page after authentication – not to the 
custom redirect URL. This keeps the user experience smooth.

#### Multisite Sub-site Privacy

If you run a WordPress multisite network, you can require logged-in users to be 
members of a specific sub-site before they can view it. This is useful for organizations
with multiple departments, teams, or client areas – each with their own sub-site
that should only be visible to relevant people.

When a user who is logged in but not a member of the current sub-site tries to access
it, they see a message listing all the sub-sites they do have access to, with clickable
links to navigate there. Access to the Network Admin area is never restricted by
this setting.

This option works in combination with the main privacy setting. Enable private site
first, then enable sub-site membership requirements for granular access control 
across your network.

#### Multisite Default Role Assignment

Managing user access across multiple sub-sites in a WordPress network can be tedious.
Every time you add a new user or create a new sub-site, you would need to manually
assign roles across all the relevant sites.

The default role assignment feature automates this. Choose a role (Subscriber, Editor,
Administrator, or any custom role), and the plugin handles the rest:

 * When a **new user** is created, they are automatically added to every active 
   sub-site in the network with the selected role
 * When a **new sub-site** is created, all existing users are automatically added
   to it with the selected role

This saves significant administration time, especially for growing organizations
where new employees and new sites are added regularly.

#### How to Make Your WordPress Site Private

Setting up a private WordPress site with All-In-One Intranet takes about one minute:

 1. Install and activate the plugin from the WordPress plugin directory
 2. Go to **Settings > All-In-One Intranet** in your WordPress admin (or **Network 
    Admin > Settings > All-In-One Intranet** for multisite)
 3. Check the box labeled **“Force site to be entirely private”**
 4. Click **Save Changes**

That is all it takes. Your site is now private. Any visitor who is not logged in
will be redirected to the WordPress login page. The REST API, XML-RPC, and search
engine indexing are all locked down automatically.

If you see a warning about registration settings after enabling privacy, follow 
the link in the warning to disable open registration and close the gap.

#### How to Set Up Auto-Logout for Inactive Users

The auto-logout feature protects your intranet from unattended browser sessions:

 1. Go to **Settings > All-In-One Intranet**
 2. Find the **Auto Logout** section
 3. Enter a number in the time field (e.g., 30)
 4. Select the time unit from the dropdown: **Minutes**, **Hours**, or **Days**
 5. Click **Save Changes**

Users who are inactive for longer than the configured period will be logged out 
on their next page interaction. Their activity timer resets on every page load, 
so active users are never interrupted.

To disable auto-logout, clear the time field and save.

#### How to Configure Login Redirect

To send users to a specific page after they log in:

 1. Go to **Settings > All-In-One Intranet**
 2. Find the **Login Redirect** section
 3. Enter the full URL of your desired landing page (e.g., `https://example.com/welcome`)
 4. Click **Save Changes**

Users who log in via `/wp-login.php` will now land on that page instead of the WordPress
dashboard. Users who were redirected to the login page from a specific URL will 
still return to that URL after logging in.

#### How to Set Up a WordPress Multisite Intranet

For organizations running a WordPress multisite network:

 1. Go to **Network Admin > Settings > All-In-One Intranet**
 2. Enable **“Force site to be entirely private”** to restrict the entire network to
    logged-in users
 3. Optionally enable **“Require logged-in users to be members of a sub-site to view
    it”** for per-site access control
 4. Under **Sub-site Membership**, select a default role to automatically assign users
    to sub-sites
 5. Click **Save Changes**

The privacy and membership settings apply network-wide. The default role assignment
runs automatically when new users or new sub-sites are created. Existing sub-sites
and users are not affected retroactively when you change the role setting.

#### Security Features

All-In-One Intranet takes a layered approach to access control:

 * **Authentication enforcement** – uses WordPress’s built-in `auth_redirect()` 
   function for reliable login redirection
 * **REST API lockdown** – blocks unauthenticated API requests, preventing data 
   access through endpoints like `/wp-json/wp/v2/posts`
 * **XML-RPC disabling** – completely disables XML-RPC when privacy is active
 * **No-role user handling** – on single-site installations, users who are logged
   in but have no assigned role are logged out and shown an error message, preventing
   access by deactivated accounts
 * **Registration monitoring** – displays admin warnings if WordPress is configured
   to allow open registration, which would undermine your private site setup
 * **Nonce verification** – all settings forms use WordPress nonce validation to
   prevent cross-site request forgery
 * **Capability checks** – settings pages require `manage_options` (single site)
   or `manage_network_options` (multisite) capabilities

Note that media uploads (images, PDFs, etc.) remain accessible to anyone who knows
their direct URL. This is a limitation of how WordPress stores media files and is
common to most privacy plugins. If you need to protect individual file downloads,
consider a dedicated file protection plugin alongside All-In-One Intranet.

#### For Developers

All-In-One Intranet provides the `aioi_allow_public_access` filter for developers
who need to make specific pages or endpoints accessible without authentication.

This filter runs during both the template redirect check and the REST API dispatch
check. Return `true` to allow public access for the current request:

    ```
    add_filter( 'aioi_allow_public_access', function( $allow ) {
        // Allow public access to a specific page
        if ( is_page( 'public-landing' ) ) {
            return true;
        }
        return $allow;
    } );
    ```

This is useful for exposing specific landing pages, webhook endpoints, or custom
API routes while keeping the rest of the site private.

#### Google Workspace Integration

If your organization uses Google Workspace (formerly Google Apps), two companion
plugins extend your intranet:

 * **[Google Apps Login](https://wp-glogin.com/glogin/?utm_source=wprepo&utm_medium=link&utm_campaign=AllInOneIntranet)**–
   lets employees sign in to WordPress using their Google Workspace accounts. Domain
   admins can manage WordPress access entirely from the Google Admin Console, and
   only authorized employees can access the intranet.
 * **[Google Drive Embedder](https://wp-glogin.com/drive/?utm_source=wprepo&utm_medium=link&utm_campaign=AllInOneIntranet)**–
   allows authors to embed Google Docs, Sheets, Slides, and other Drive files directly
   into pages and posts. Useful for intranets where documentation lives in Google
   Drive.

Visit [wp-glogin.com](https://wp-glogin.com/?utm_source=wprepo&utm_medium=link&utm_campaign=AllInOneIntranet)
for more information about these and other plugins.

## Screenshots

[⌊All-In-One Intranet settings: make your WordPress site private, set auto-logout,
and configure the login redirect.⌉⌊All-In-One Intranet settings: make your WordPress
site private, set auto-logout, and configure the login redirect.⌉[

All-In-One Intranet settings: make your WordPress site private, set auto-logout,
and configure the login redirect.

[⌊Network Admin settings for a multisite intranet: network-wide privacy and per-
sub-site membership controls.⌉⌊Network Admin settings for a multisite intranet: 
network-wide privacy and per-sub-site membership controls.⌉[

Network Admin settings for a multisite intranet: network-wide privacy and per-sub-
site membership controls.

## Installation

Easiest way:

 1. Go to your WordPress admin control panel’s plugin page
 2. Search for ‘All-In-One Intranet’
 3. Click Install
 4. Click Activate in the plugin card
 5. Go to ‘All-In-One Intranet’ under Settings in your WordPress admin area to configure
    the plugin

If you cannot install from the WordPress plugins directory for any reason, and need
to install from ZIP file:

 1. Upload `all-in-one-intranet` directory and contents to the `/wp-content/plugins/`
    directory, or upload the ZIP file directly in the Plugins section of your WordPress
    admin
 2. Go to Plugins page in your WordPress admin
 3. Click Activate
 4. Go to ‘All-In-One Intranet’ under Settings in your WordPress admin area to configure
    the plugin

## FAQ

### How do I make my WordPress site completely private?

Install and activate the plugin, then go to Settings > All-In-One Intranet and check“
Force site to be entirely private.” All pages, posts, and custom content types will
require login. The REST API and XML-RPC are also locked down automatically.

### Does the plugin protect uploaded media files?

No. Media files (images, PDFs, videos, etc.) that are uploaded through WordPress
remain accessible to anyone who knows the direct URL. This is because WordPress 
serves media files directly through your web server, bypassing PHP and plugin logic.
This limitation is common to most WordPress privacy plugins. If direct media file
protection is a requirement, you would need a server-level solution or a dedicated
download protection plugin in addition to All-In-One Intranet.

### Does it block the WordPress REST API?

Yes. When the private site option is enabled, all unauthenticated REST API requests
receive a 401 error response. This prevents external tools, scripts, or bots from
accessing your content through API endpoints like `/wp-json/wp/v2/posts`. Authenticated
requests from logged-in users continue to work normally.

### How does auto-logout work?

The plugin records a timestamp each time a logged-in user loads a page. On the next
page load, it compares the current time against the stored timestamp. If the difference
exceeds the configured idle time, the user is logged out immediately. The idle timer
resets on every page load, so users who are actively browsing are never interrupted.
You can set the timeout in minutes, hours, or days.

### Can I set a custom page for users to see after login?

Yes. In the Login Redirect section of the plugin settings, enter the full URL of
the page you want users to land on after logging in. This overrides the default 
WordPress behavior of sending users to the dashboard. Note that if a user was trying
to reach a specific page before being asked to log in, they will be redirected back
to that page instead of the custom redirect URL.

### Does it work with WordPress multisite?

Yes. The plugin is fully compatible with WordPress multisite. In a multisite network,
the settings are managed from the Network Admin area. You can make the entire network
private, require users to be members of individual sub-sites before accessing them,
and automatically assign roles to users across sub-sites when new users or new sites
are created.

### Can I allow certain pages to remain public while the rest of the site is private?

Yes, but it requires a small amount of code. Use the `aioi_allow_public_access` 
filter in your theme’s `functions.php` file or a custom plugin. For example, to 
keep a page with the slug “public-info” accessible without login:

    ```
    add_filter( 'aioi_allow_public_access', function( $allow ) {
        if ( is_page( 'public-landing' ) ) {
            return true;
        }
        return $allow;
    } );
    ```

### Does it block search engines from indexing my site?

Yes. When the private site option is enabled, the plugin overrides the robots.txt
file to disallow all crawling. It also disables outgoing pingbacks and trackbacks,
so your site does not announce new content to external services or ping aggregators.

### Does it work with caching plugins?

Generally, yes. Most WordPress caching plugins bypass the cache for logged-in users
and do not cache redirects, so the privacy enforcement works as expected. However,
aggressive full-page caching at the server level (Varnish, Nginx FastCGI cache) 
may serve cached pages to unauthenticated users if not configured to respect WordPress
login cookies. If you use server-level caching, make sure it bypasses the cache 
when WordPress login cookies are absent.

### What happens to users with no role on my site?

On a single-site WordPress installation, users who are logged in but have no assigned
role are treated as unauthorized. The plugin logs them out and displays a message
explaining that they do not have permission to access the site. This prevents access
by accounts that have been deactivated by removing their role rather than deleting
them.

### Does it block XML-RPC access?

Yes. When the private site option is active, the plugin completely disables XML-
RPC. This prevents any remote access through the XML-RPC protocol, including third-
party apps and services that use it to interact with WordPress.

### Is it compatible with custom login page plugins?

The plugin uses WordPress’s built-in `auth_redirect()` function to send unauthenticated
users to the login page. Most custom login page plugins work by intercepting the
standard login URL and redirecting to a custom page. Because All-In-One Intranet
relies on standard WordPress authentication functions, it is generally compatible
with custom login page plugins. The login redirect feature also works regardless
of whether the user logs in through the default or a custom login page.

### How is this different from a membership plugin?

Membership plugins are built to sell access – they manage subscription levels, process
payments, and drip-feed content to paying customers. All-In-One Intranet is built
for internal, private sites where everyone who logs in is already a trusted member
of your organization. It locks the entire site down to logged-in users in one click
instead of gating individual posts behind a purchase or subscription tier. If you
need to charge for access, use a membership plugin; if you need a private company
intranet, this is the simpler fit.

### Does it work with page builders like Elementor, Beaver Builder, or Divi?

Yes. All-In-One Intranet works at the authentication layer and does not change how
your pages are built or rendered, so you can design your intranet with any page 
builder and the privacy enforcement still applies to the finished pages. If a builder’s
live preview appears to redirect to the login screen, that is expected for a logged-
out request – edit while logged in and the builder behaves normally.

### Will it slow down my site?

No noticeable impact. The privacy check runs early on each request and is a simple
logged-in or logged-out test, and the auto-logout feature reads and writes a single
user meta value per page load. There are no external calls and no heavy database
queries involved.

### Can I keep my custom-branded login page?

Yes. The plugin relies on WordPress’s standard authentication, so it does not replace
or restyle your login screen. If you use a custom login page plugin, unauthenticated
visitors are sent to whatever login URL WordPress is configured to use, and your
branding is preserved.

## Reviews

![](https://secure.gravatar.com/avatar/3a47911966c3c3b190249fe82986fda13c442e8a305ab793c5542a77356d35bd?
s=60&d=retro&r=g)

### 󠀁[Buen trabajo](https://wordpress.org/support/topic/buen-trabajo-31/)󠁿

 [javigandia](https://profiles.wordpress.org/javigandia/) February 17, 2022 1 reply

Un gran plugins, muchas gracias.

![](https://secure.gravatar.com/avatar/410b3b36e662c2f04ac4ddbc2e6f8236fa8fada4f40d061687e1429642eba007?
s=60&d=retro&r=g)

### 󠀁[Simple and effective](https://wordpress.org/support/topic/simple-and-effective-1133/)󠁿

 [surnet](https://profiles.wordpress.org/surnet/) May 13, 2020 1 reply

Great plugin, it simply does its job, regularly updated and other than that, you
just set it and forget it. I’ve been using it on several sites for 3 years now, 
I don’t regret my choice. Thanks for offering this to the community !

![](https://secure.gravatar.com/avatar/86a70a363bd233b71aca4cc6692b3e1e6c232d26f7b1a8cecf62bfd45a4dca9b?
s=60&d=retro&r=g)

### 󠀁[Excellent plugin and outstanding customer support](https://wordpress.org/support/topic/excellent-plugin-and-outstanding-customer-support/)󠁿

 [helpubuy](https://profiles.wordpress.org/helpubuy/) May 2, 2020 1 reply

This plugin suits my needs perfectly. I need a members only training site with a
google login feature since we use Google apps. I’m not very technical and had problems
getting the apps configured correctly. Support was outstanding! They got me up and
running in no time. The plugins work perfectly…I’m very happy. Highly recommended!

![](https://secure.gravatar.com/avatar/b33a5e48af252581d1457b699e236bf06393ce4849e0d2231a8f93140a6a8326?
s=60&d=retro&r=g)

### 󠀁[All In One Intranet](https://wordpress.org/support/topic/all-in-one-intranet/)󠁿

 [Fiona](https://profiles.wordpress.org/feesplacegooglemailcom/) January 11, 2019
2 replies

I want to use this on my website – but I have no idea how it will look! There are
loads of reviews saying it’s great and info on how to install, etc. but how will
it actually look at the end of it all and where can I get support if I have queries?
Can anyone provide any screenshots or demos of how it looks once it’s installed 
and up and running??

![](https://secure.gravatar.com/avatar/2e2b0f2c0fb47c6fc1fb9046ba589ffa97273d957938bd4330d5c793419b9424?
s=60&d=retro&r=g)

### 󠀁[Perfect for quick setup of private sites](https://wordpress.org/support/topic/perfect-for-quick-setup-of-private-sites/)󠁿

 [karendean](https://profiles.wordpress.org/karendean/) April 1, 2017 1 reply

Simple and effective. 3 crucial settings and its done! Thank you – I’m using it 
on private intranet sites.

![](https://secure.gravatar.com/avatar/4ad74c6c9c0395efb9fc062969ca8e155ace791382b4bae35ba3a6e3b3ea67c3?
s=60&d=retro&r=g)

### 󠀁[Excellent plugin](https://wordpress.org/support/topic/excellent-plugin-1946/)󠁿

 [sg2211](https://profiles.wordpress.org/sg2211/) September 3, 2016 1 reply

Excellent plugin that does the job. Good work by the developer who will hopefully
continue to maintain it.

 [ Read all 10 reviews ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/)

## Contributors & Developers

“Intranet & Private Site – All-In-One Intranet” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ Syed Balkhi ](https://profiles.wordpress.org/smub/)
 *   [ Slava Abakumov ](https://profiles.wordpress.org/slaffik/)
 *   [ Jared Atchison ](https://profiles.wordpress.org/jaredatch/)

“Intranet & Private Site – All-In-One Intranet” has been translated into 5 locales.
Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/all-in-one-intranet/contributors)
for their contributions.

[Translate “Intranet & Private Site – All-In-One Intranet” into your language.](https://translate.wordpress.org/projects/wp-plugins/all-in-one-intranet)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/all-in-one-intranet/),
check out the [SVN repository](https://plugins.svn.wordpress.org/all-in-one-intranet/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/all-in-one-intranet/)
by [RSS](https://plugins.trac.wordpress.org/log/all-in-one-intranet/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.9.1

 * Fixed: Fatal error “Call to undefined function getmypid()” on hosts where the
   PHP `getmypid()` function is disabled.

#### 1.9.0

 * Changed: Compatibility with WordPress 7.0.
 * Changed: The “Force private” auth gate now works correctly when WordPress is 
   installed in a subdirectory.
 * Changed: On activation the plugin now plants a small must-use companion (`wp-
   content/mu-plugins/aioi-installing-gate.php`); deactivation removes it. It closes
   a `/wp-activate.php` content-leak surface that the main plugin cannot reach on
   its own (see Fixed).
 * Changed: The post-login redirect URL is now sanitized and normalized when saved:
   a bare path such as `dashboard` is stored as `/dashboard`, while site-relative
   paths and full http(s) URLs are kept as entered.
 * Fixed: Fixed multiple access-control bypasses in “Force private” mode that allowed
   unauthenticated visitors to read protected posts and feeds via crafted URLs.
 * Fixed: Closed a content-leak on “Force private” sites where unauthenticated visitors
   could read protected posts, feeds, and REST output through `/robots.txt` by overriding
   its query string (for example `/robots.txt?robots=0&feed=rss2` or `?robots=0&
   p=N`).
 * Fixed: Fixed unauthenticated post-slug enumeration via WordPress’s canonical 
   redirect on pretty permalinks.
 * Fixed: Closed an access-control bypass on “Force private” sites where unauthenticated
   visitors could post comments and trackbacks to protected posts via `wp-comments-
   post.php` and `wp-trackback.php`.
 * Fixed: Closed a content-leak on single-site (and non-network-activated multisite)“
   Force private” installs where unauthenticated visitors could read RSS feeds and
   REST API output through `/wp-activate.php` (for example `?feed=rss2`, `?p=N&feed
   =comments-rss2`, or `?rest_route=/wp/v2/posts`). WordPress core skips loading
   regular plugins on `wp-activate.php` because of `WP_INSTALLING`, so the gate 
   is now enforced from a must-use companion file.
 * Fixed: Closed a content-leak on “Force private” sites where unauthenticated visitors
   could read the site’s blogroll (the OPML links export), title, and WordPress 
   version through `/wp-links-opml.php`, which loads WordPress without firing the
   normal page-render auth gate.
 * Fixed: Closed an access-control bypass on “Force private” sites where unauthenticated
   visitors could reach the AJAX and form-handler endpoints (`/wp-admin/admin-ajax.
   php` and `/wp-admin/admin-post.php`). WordPress treats these as admin requests,
   so the normal page-render auth gate did not apply to them — any public (“nopriv”)
   action registered by the active theme or another plugin would run for logged-
   out visitors even though the site is private, potentially exposing data or triggering
   actions that should require a login. Both endpoints now require a valid login.
 * Fixed: On “Force private” sites the REST API and comment/trackback gates now 
   apply the same role and sub-site-membership checks as the rest of the site, so
   a logged-in user with no role (or who is not a member of the current sub-site)
   can no longer read REST API content or post comments that they would otherwise
   be blocked from.
 * Fixed: Additional “Force private” hardening: the inactivity auto-logout now bounces
   through a host-validated safe redirect instead of trusting the `Host` header,
   the network settings save now performs an explicit capability check, and the 
   default sub-site member role is validated against the registered roles when saved.
 * Fixed: Minor robustness and standards fixes: the private-site `robots.txt` now
   includes a `User-agent: *` line, the plugin’s PHP files guard against direct 
   access, and corrected an internationalization issue in a registration warning
   notice.

#### 1.8.1

 * Changed: Compatibility with WordPress 6.9.
 * Fixed: Made sure the XMLRPC is also safeguarded against unauthorized access.

#### 1.8.0

 * IMPORTANT: The minimum WordPress version is now WordPress v5.5.
 * IMPORTANT: The minimum PHP version is now PHP v7.0.
 * Added: Multisite-specific options: “Require logged-in users to be members of 
   a sub-site to view it”.
 * Added: “Sub-site Membership” – assign a user role for newly added users.
 * Changed: Compatibility with WordPress 6.6.
 * Fixed: Several security-related improvements in various parts of the plugin.
 * Fixed: Code style improvements.

#### 1.7.1

 * Security update and added WordPress 5.7 compatibility.

#### 1.7

 * Security update and added WordPress 5.6 compatibility.

#### 1.6

 * Security update and added WordPress 5.4.1 compatibility.

#### 1.5

 * Ready for WP 4.9. Disables unauthenticated calls to WP REST API by default.

#### 1.4

 * Now supports localization – please contribute your translations!

#### 1.3

 * Changed which WordPress hooks are used to check for auto-logout. This is to widen
   compatibility with certain Themes.

#### 1.2

 * On non-multisite WordPress, now restricts access to users who have no role, as
   well as those who aren’t logged in at all.

#### 1.1

 * Ready for public release.

## Meta

 *  Version **1.9.1**
 *  Last updated **3 weeks ago**
 *  Active installations **4,000+**
 *  WordPress version ** 5.5 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.0 or higher **
 *  Languages
 * [Dutch](https://nl.wordpress.org/plugins/all-in-one-intranet/), [English (US)](https://wordpress.org/plugins/all-in-one-intranet/),
   [French (France)](https://fr.wordpress.org/plugins/all-in-one-intranet/), [German](https://de.wordpress.org/plugins/all-in-one-intranet/),
   [Spanish (Mexico)](https://es-mx.wordpress.org/plugins/all-in-one-intranet/),
   and [Spanish (Spain)](https://es.wordpress.org/plugins/all-in-one-intranet/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/all-in-one-intranet)
 * Tags
 * [intranet](https://wordpress.org/plugins/tags/intranet/)[login](https://wordpress.org/plugins/tags/login/)
   [private](https://wordpress.org/plugins/tags/private/)[private site](https://wordpress.org/plugins/tags/private-site/)
   [Restrict access](https://wordpress.org/plugins/tags/restrict-access/)
 *  [Advanced View](https://wordpress.org/plugins/all-in-one-intranet/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  10 5-star reviews     ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/all-in-one-intranet/reviews/)

## Contributors

 *   [ Syed Balkhi ](https://profiles.wordpress.org/smub/)
 *   [ Slava Abakumov ](https://profiles.wordpress.org/slaffik/)
 *   [ Jared Atchison ](https://profiles.wordpress.org/jaredatch/)

## Support

Issues resolved in last two months:

     2 out of 5

 [View support forum](https://wordpress.org/support/plugin/all-in-one-intranet/)