Customer accounts

One account, everything the customer has done with you.

Orders, courses, appointments, addresses: your customers find everything in a single space. You keep clean, protected, GDPR-compliant accounts without configuring anything.

Sign-up and sign-in

An account opens with a confirmed email address: until the link received has been followed, the account cannot sign in. That is what keeps out automated sign-ups and mistyped addresses.

  1. Sign in with Google, Apple or Facebook, as well as email and password. Each provider is turned on in the admin, with the credentials you get from it.
  2. An account you create from the admin receives an email to choose its password: you never know anyone's.
  3. Attempts are capped — sign-in, sign-up, forgotten password —, per IP address and per account.
  4. Accounts never confirmed are deleted after thirty days. Never an account that has been used: an order, a course enrolment or an appointment is enough to protect it, as is the site's staff.

The delay is set in the .env

JEIKO_UNVERIFIED_ACCOUNT_TTL_DAYS=30 # unconfirmed accounts
JEIKO_USER_SESSIONS_RETENTION_DAYS=30 # session history
JEIKO_SECURITY_EVENTS_RETENTION_DAYS=365 # security log

The customer area

A single page gathers what the customer has done on your site, whichever modules you use.

  1. Their orders, with the detail of each one.
  2. Their courses and their progress.
  3. Their appointments, upcoming and past.
  4. Their profile and addresses, which they edit themselves.

Whatever affects access to the account is confirmed and reported:

  1. Changing the email address requires confirming the new one, and the old one receives an alert.
  2. Changing the password sends a heads-up email: if it wasn't them, the customer knows straight away.

Two-factor authentication

Everyone turns it on from their own area. After the password, a six-digit code is sent to the account's address, and sign-in only completes once that code is entered. It protects against by far the most common case: a leaked, reused or phished password.

code 6 digits, cryptographically random
validity 10 minutes
attempts 5 at most
resends 5 per hour
storage fingerprint only, never the code in clear

Turning two-factor authentication on or off sends an email to the account holder.

GDPR, in two buttons

The right of access and the right to erasure don't go through an email handled by hand: the customer exercises them from their area, and you can do it for them from the admin.

  1. Export: a JSON file with everything the site knows about the person — account, profile, addresses, consents, orders, courses, appointments, questionnaires, security log. Never a third party's data, never the password, even hashed.
  2. Erasure: personal data is deleted, avatar included. Orders, which the law requires you to keep for ten years, are anonymised — amounts and dates stay for the accounts, name and address disappear. Appointments and the log of sent emails are anonymised the same way.

Every table linked to an account has a declared treatment on erasure, and a test rejects any table that lacks one: data added tomorrow cannot silently survive an erasure request.

On the admin side

  1. Roles and permissions: give a colleague access to orders without opening the settings; assign and revoke in bulk.
  2. Revocable sessions and a security event log: sign-ins, password changes, two-factor authentication.

SecurityEmails