- Home
- Apps
- SaaS Tools
- Access Restriction By IP
Illustrative previewA build-to-order Odoo security module that restricts user logins to approved IP addresses and CIDR ranges.
ECOSIRE scopes, builds, installs and supports it for your Odoo 17/18/19 environment — a made-to-order engagement, not an instant download.
What is Access Restriction By IP?
A build-to-order Odoo security module that restricts user logins to approved IP addresses and CIDR ranges. ECOSIRE scopes, builds, installs and supports it for your Odoo 17/18/19 environment — a made-to-order engagement, not an instant download. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Most Odoo deployments trust any device that presents a valid password, so a leaked credential, a phished login, or a reused session cookie can reach your ERP from anywhere on the internet. Odoo core gives you strong password policies, optional two-factor authentication, and group-based access rights via ir.model.access.csv and record rules — but it has no native concept of a network boundary. Nothing in the standard product lets you say "the accounting team may only authenticate from the office range, the API integration user only from our fixed server IP, and administrators only from the VPN." Auditors, ISO 27001 programs, and many finance and healthcare mandates expect exactly that network-layer control, and out of the box Odoo simply cannot enforce it.
Access Restriction By IP is the build-to-order module ECOSIRE designs to close that gap. We build an allowlist engine that hooks the authentication flow (res.users._login / _check_credentials plus session validation) so that after credentials pass, the request's source IP is evaluated against your rules before a session is granted. Rules live on new models (for example ecosire.ip.rule) with fields.Char CIDR entries validated by an @api.constrains using Python's ipaddress library, linked many2many to res.users and res.groups, and administered from clean backend views (XML/OWL list and form) governed by ir.model.access.csv and record rules so only security administrators can edit them. The engine reads the true client IP — honoring X-Forwarded-For and your --proxy-mode / reverse-proxy topology so Nginx or Cloudflare in front of Odoo does not mask the real address — and resolves per-user rules over per-group rules with a configurable default-allow or default-deny posture.
Because it operates at the authentication layer rather than the routing layer, the restriction covers the web client, the login controller, and — where you require it — the XML-RPC / JSON-RPC API, so a scripted integration cannot bypass the browser rules. Every blocked attempt can be written to a log model and surfaced through an optional automated action or email alert, giving you the audit trail assessors ask for. We keep superuser and a break-glass recovery path explicit so a misconfigured range can never lock your entire company out, and we tune behavior for Community vs Enterprise (Enterprise adds features like the built-in auth_totp two-factor that this module complements rather than replaces).
Delivery is build-to-order: we start with a short scoping call, agree the exact rule model, proxy topology, and lock-out safeguards, then build against your Odoo 17.0, 18.0, or 19.0 version, validate on a staging clone with your real network ranges, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company IP policies, reverse-proxy and geo-IP integrations, per-database rule sets, and deeper audit-logging requirements increase the quoted scope.
What you get
- Installable source code for your Odoo major version (17.0, 18.0 or 19.0), packaged as a standard addon with `__manifest__.py`
- Installation and configuration on your environment (or a guided deploy with your team)
- Technical documentation: models, rule precedence, proxy configuration and security notes
- End-user / administrator guide plus a live training session for your security admins
- Post-go-live support window for defect fixes and configuration questions
- UAT on a staging clone with your real network ranges, plus a tested rollback plan
- Git repository handover with full commit history and tagged release
- Configured sample rule set and a documented break-glass recovery procedure
Who this is for
IT Security / Compliance Lead
Owns ISO 27001, SOC 2 or sector mandates and needs demonstrable network-layer access control over the ERP, with an audit trail of blocked login attempts to show assessors.
Odoo System Administrator
Runs the Odoo instance behind Nginx/Cloudflare and wants to lock admin and finance logins to the office VPN or fixed ranges without hand-patching core or fighting proxy-header issues.
Finance / Operations Manager
Wants assurance that sensitive accounting and payroll access can only happen from approved locations, reducing exposure from stolen credentials or off-site devices.
Integration / DevOps Owner
Maintains XML-RPC/JSON-RPC integrations and needs API service users pinned to specific server IPs so an exposed API key cannot be used from an unknown host.
How Access Restriction By IP Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Network-layer login control | Purpose-built per-user and per-group IP allowlists at the auth layer | Achievable but you design and maintain the whole engine | Basic IP allow/deny, often per-user only | No concept of a network boundary at login |
| Fit to your Odoo version | Built and validated against your 17/18/19 instance | Depends on your team's Odoo depth | Generic build; may lag your version | N/A |
| Proxy / X-Forwarded-For handling | Tuned to your Nginx/Cloudflare topology during scoping | You must get proxy-mode right yourself | Often assumes a default setup | Not applicable |
| API (XML-RPC/JSON-RPC) coverage | Optional enforcement so integrations respect the rules | Possible with extra effort | Frequently web-login only | None |
| Lock-out safeguards | Explicit break-glass path, tested on staging | Only if you design and test it | Rarely documented | N/A |
| Audit logging of blocked attempts | Dedicated log model plus optional alerts | Build it yourself | Limited or absent | None |
| Support & handover | Docs, training, support window, git repo handover | Internal knowledge only | Vendor ticket queue, no source ownership | Community forums |
| Total cost & risk | Fixed quote after scoping; from $999 indicative | Unbounded dev + maintenance time | Low sticker price, poor fit risk | Free but does not solve the need |
Frequently Asked Questions about Access Restriction By IP
How long does delivery take?
This is a build-to-order engagement. After a scoping call to confirm your rule model, proxy topology and lock-out safeguards, typical delivery is one working week. We build against your exact Odoo version, validate on a staging clone with your real network ranges, then deploy with a rollback plan.
Is this an existing app I can download and install right now?
No. We build, install and support it for your environment — there is no instant download. You receive installable source code for your Odoo major version, deployed and validated by our team, with a git repository handover at the end.
How does pricing and scoping work?
Pricing starts from $999 as an indicative single-company base scope. After the scoping call we give you a fixed written quote. Drivers such as multi-company IP policies, reverse-proxy/geo-IP integrations, per-database rule sets and deeper audit-logging increase the quoted scope.
What about ongoing support and Odoo version updates?
Every build includes a post-go-live support window for defect fixes and configuration help. Because the module is version-specific, moving to a newer Odoo major release (for example 18.0 to 19.0) is a separate scoped update — we hold the git history so that upgrade is straightforward to quote.
Will a wrong IP range lock everyone out of Odoo?
No. We design an explicit break-glass recovery path and controlled superuser handling so a misconfigured range can never lock your whole company out, and we prove the recovery procedure during UAT on staging before go-live.
Does it work behind Nginx, a load balancer or Cloudflare?
Yes. The module reads the true client IP by honoring `X-Forwarded-For` and your Odoo `--proxy-mode` / reverse-proxy setup, so a front-end proxy does not mask the real source address. We confirm the exact header chain during scoping.
Can it restrict the XML-RPC / JSON-RPC API too, not just the web login?
Yes, where you require it. Because enforcement sits at the authentication layer, we can apply the same allowlist rules to API sessions so an integration or service user is pinned to approved server IPs and cannot be used from an unknown host.
Related Modules

Abandoned Cart & Checkout Recovery for Odoo
Automated multi-step abandoned-cart and checkout recovery emails with discounts, resume links, and recovered-revenue reporting — built for your Odoo.

Access Account Reports in Various Currencies
A build-to-order Odoo module that lets you render any accounting report — P&L, Balance Sheet, aged reports, journals, trial balance — in a currency of your choice, with automatic conversion at the rate you define. ECOSIRE scopes, builds, installs and supports it for your Odoo 17/18/19 environment.

Accounting Excel Reports
A made-to-order Odoo module that turns your ledgers, journals, and financial statements into fully formatted, drill-down Excel workbooks. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19 database.

Accounting Internal Transfer Payment
A build-to-order Odoo module that manages internal payment transfers between cash and bank journals as a single, auditable operation with clean two-sided reconciliation. Requested by quotation, then built, installed, and supported by ECOSIRE.
Access Restriction By IP
A build-to-order Odoo security module that restricts user logins to approved IP addresses and CIDR ranges. ECOSIRE scopes, builds, installs and supports it for your Odoo 17/18/19 environment — a made-to-order engagement, not an instant download.
- Post-authentication IP check hooked into `res.users._login` / `_check_credentials` so a valid password alone no longer grants a session
- Per-user and per-group allowlist rules with a documented precedence order (user rule overrides group rule)
- CIDR range and individual-IP support (IPv4 and IPv6) validated with Python `ipaddress` in an `@api.constrains`
- Configurable default posture — default-deny (only listed IPs allowed) or default-allow (block only listed ranges)