Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Face Liveness v 19.0
  4. Sales Conditions FAQ

Face Liveness

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 14
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• Face Kiosk Attendance
Lines of code 3635
Technical Name eh_hr_face_liveness
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• Face Kiosk Attendance
Lines of code 3635
Technical Name eh_hr_face_liveness
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
ERP Heritage
ERP Heritage · Attendance Suite
Anti spoof

Face Liveness

An active liveness check sat in front of the face match. The kiosk shows a blink prompt; the browser tracks the eye landmarks face-api.js already loaded; the embedding capture only runs once enough blinks are detected. Stops a printed photo or a phone screen held at the camera, with every attempt audited.

Odoo 19 Community v19.0.1.0.0 LGPL-3 Human Resources / Attendances
Active blink check
Pre match gate
Every attempt logged
Per company toggle
BUILT FOR
Sites already running the face kiosk that want a quick anti spoof gate without paying a passive liveness vendor
SAVES YOU
A separate liveness SDK contract, vendor onboarding, and a second model bundle to drop into the kiosk
REPLACES
The Friday afternoon "someone showed a photo to the kiosk" debrief and the awkward HR follow up that comes with it

Day in the life

"Please blink slowly twice." Two real blinks later, the day starts.

A worker steps up to the kiosk. The face kiosk would normally start the embedding loop straight away. With liveness installed, the welcome screen hands off to a prompt: blink slowly twice. The browser watches the eye aspect ratio over a configurable window, counts blinks, and only signals pass once the threshold is met. On pass, the kiosk continues into face match. On fail or timeout, the kiosk shows a polite retry screen. Every attempt, pass, fail, or aborted, lands in eh.hr.liveness.check, so a fortnightly review can spot the depot where the spoof attempts cluster.

Overview

What this module does, in one read.

eh_hr_face_liveness slots an active blink check into the kiosk welcome to capture transition.

The kiosk shows a prompt, the browser tracks the eye landmarks face-api.js already loaded for the match step, and the embedding capture only proceeds on a passing detection. Every attempt is logged so a manager can see fail patterns over time. A daily retention cron deletes rows older than the configured horizon (default 180 days).

eh_hr_attendance_base eh_hr_face_kiosk
Module
eh_hr_face_liveness
VERSION
19.0.1.0.0
LICENCE
LGPL-3
DEFAULT BLINKS
2
DEFAULT TIMEOUT
8000 ms

Capabilities

Eight things this module gives you, with no padding.

CAPABILITY 01

Active blink prompt

The kiosk asks the user to blink, watches the eye aspect ratio between the face-api.js landmarks already loaded for the match step, and only proceeds on a passing detection.

CAPABILITY 02

Photo attack defence

Blocks the simplest spoof: a printed photo or a phone screen held at the kiosk camera. The match cannot run until the prompt passes, so a static image cannot trigger an attendance row.

CAPABILITY 03

Per company configuration

Toggle the gate on or off per company, set the required blink count (default 2), and set the maximum wait in milliseconds (default 8000) before the attempt is declared failed.

CAPABILITY 04

Every attempt logged

eh.hr.liveness.check stores one row per attempt with outcome, prompt shown, duration, blinks detected, fail reason, device, site, and (after match) the employee. Read only for managers, queryable.

CAPABILITY 05

Three outcomes, no ambiguity

Passed, failed, or aborted. Aborted means the user walked away mid prompt; failed means the timeout elapsed without enough blinks; passed means the threshold met. Filters and dashboards know which is which.

CAPABILITY 06

Daily retention sweep

A daily cron deletes attempt rows older than the configured horizon (default 180 days), batched so a database with months of stale rows does not freeze a worker.

CAPABILITY 07

Wired into the kiosk shell

The kiosk JS hook intercepts the welcome to capture transition; no template work in the consuming module. Install, configure, and the gate slots in.

CAPABILITY 08

Honest about the limits

Detection runs in the browser; the server only audits what the browser claimed. A determined attacker who controls the device can fake the outcome. For high security exposure, layer this on top of a paid passive liveness model.

Compared

How this module stacks up.

FEATURE
FACE MATCH ALONE
PAID PASSIVE LIVENESS
THIS MODULE
Photo attack defence
None
Strong
Active blink check stops the easy ones
Where the check runs
No check
Vendor cloud
Browser, on the kiosk device
Worker friction
None
Invisible
One blink prompt; usually under two seconds
Audit visibility
Match attempts only
Vendor dashboard
Every attempt in your Odoo, queryable
Determined attacker who controls the device
Trivial bypass
Hard
Bypassable; layer with passive liveness for high stakes
2
Default blinks required
Configurable per company. Higher counts trade friction for assurance.
8s
Default timeout
After this, the attempt is failed and the worker is asked to retry.
180
Days retention
Daily cron prunes attempt rows older than the configured horizon.

Workflow

Install. Toggle on. Tune. Watch.

1

Install

Pick eh_hr_face_liveness. Depends on the suite base and the face kiosk.

2

Toggle on

Open Settings under People Operations. Enable the liveness check on the company. The kiosk picks it up on the next page reload.

3

Tune

Set blinks required and the timeout. Defaults of two blinks within eight seconds work for most sites; raise either if false positives bother you.

4

Watch

Open the Liveness Checks list. Filter by failed or aborted to find sites with a sudden spike of suspicious attempts.

Frequently asked questions

Honest answers to the questions a buyer asks.

Will this stop a printed photo of an employee?

Yes for a static print. The blink prompt requires real eye motion the printed image cannot produce. A video on a phone screen is harder; a determined attacker with a high refresh rate display and a video clip of the target may still pass.

How long does the gate add to a clock in?

In testing, a cooperative user passes within one to two seconds. The default eight second timeout sets the upper bound on a failed attempt.

Is detection done on the server?

No. The browser uses the face-api.js landmarks already loaded for the match step. The server only audits what the browser claims, so a determined attacker controlling the device can fake the outcome. For high security paths, layer this on top of a paid passive liveness vendor.

Can I keep the gate off but still log attempts?

No. The toggle controls both the prompt and the row write. With the gate off, no liveness rows are produced. Switch the gate on for the audit trail.

How long is data retained?

Each attempt row is kept for the configured horizon (default 180 days), then deleted by a daily retention cron.

ERP Heritage

Questions about the suite or this module:

info@erpheritage.com.au

Module: eh_hr_face_liveness · Version 19.0.1.0.0 · Licence LGPL-3

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with