06 Chapter 06

Authentication & Access

One weak door is all it takes: a guessed password, a forgotten session on a shared tablet, a new hire with more access than her job needs. This chapter is how people get into the store and how you stop worrying about all of that: shoppers sign in, recover passwords and verify their email on their own, while your team gets exactly the access their jobs need, an optional second lock on the door, a clear record of who changed what, and a live window over the work running in the background.

Signing in

Registration

Customer

The problem: new customers need to open an account entirely on their own, at midnight, on their phone. If a sign-up ever needs your help, or a mistyped email quietly sticks to an account, the mess lands on your desk.

Shoppers create their own account with a name, email and password, and are treated as a customer from the first minute. A verification email goes out straight away so the address is confirmed before anything important depends on it, with nothing for you to set up or untangle.

In practice

Say a first-time visitor from Doha has fallen for a ready-to-wear black crepe abaya and wants to save it to a wishlist and check out faster next time. She does not have an account yet.

How Angelite handles it: she opens the Create account page, types her name, email and a password, confirms the password and submits. She is signed in immediately and shown a friendly "please verify your email" notice, while a confirmation link lands in her inbox. From that moment she is a recognised customer who can favourite pieces and reuse her details at checkout.

How to use it

  1. From the storefront, the shopper opens the Create account page.
  2. They enter their name, email address and a password, then confirm the password.
  3. On submit they are signed in straight away and shown a "please verify your email" notice.
  4. A verification link is emailed to the address they entered.
Storefront registration form
Where: the storefront Create account page.

Login & logout

Customer

The problem: somewhere out there, someone is always trying passwords against a shop's sign-in page. And you do not want to run two separate doors, one for shoppers and one for staff, just to keep the back office apart.

The everyday email-and-password sign-in, shared by shoppers and staff. Repeated wrong attempts are slowed down automatically to shut out guessing, and after login each person lands in the right place: shoppers in their account, staff in the admin.

In practice

Imagine a returning customer comes back to reorder a made-to-order kaftan with hand-beaded sleeves as a gift, and at the same time your sales assistant signs in from the shop counter to process the day's orders. Both use the same Sign in page.

How Angelite handles it: each enters their email and password on the Sign in page. The customer is taken to her account where her past orders wait; the assistant is recognised as staff and dropped straight into the admin dashboard. When either is done, the Log out option in their menu ends the session cleanly. If someone fumbles the password several times in a row, the form briefly pauses them to shut out anyone trying to guess.

How to use it

  1. Open the storefront Sign in page.
  2. Enter your email and password, then submit.
  3. You are taken to your account (or, for staff, to the admin dashboard).
  4. To sign out, use the Log out option in the account or admin menu.
Storefront login form
Where: the storefront Sign in page.

Good to know: after too many failed attempts in a short window the form pauses you with a "too many attempts" message, then lets you try again shortly after.

Password reset

Customer

The problem: a customer who forgot her password either gives up on the order, or opens a second account and loses her history, and either way the "I cannot log in" message ends up with you.

A safe way back in by email. The shopper requests a reset, gets a one-time link in her inbox, and chooses a new password from that link: same account, order history intact, nothing for you to do.

In practice

A customer who last bought a ready-to-wear evening kaftan six months ago returns for an Eid gift but cannot remember her password. She does not want to make a second account and lose her order history.

How Angelite handles it: on the Sign in page she clicks Forgot password, enters her email and submits. A one-time reset link arrives in her inbox; she opens it, chooses a new password and confirms it, then signs back into the very same account with all her saved details intact. For safety, finishing the reset signs her out everywhere else, so any older session cannot linger.

How to use it

  1. On the Sign in page, the shopper clicks Forgot password.
  2. They enter their email address and submit; a "check your email" message confirms it.
  3. They open the email and click the reset link.
  4. They set a new password and confirm it, then sign in with the new password.
Storefront forgot password form
Where: the storefront Forgot password page.

Good to know: for safety, completing a reset signs the account out of every other device, so a stolen session cannot survive the very fix the customer just made.

Email verification

Customer

The problem: a shopper mistypes her email at sign-up and never notices. From that day her order confirmations, receipts and reset links all go to a stranger's inbox, and she blames the shop.

Confirms that a new account really owns the email address it signed up with. The shopper clicks a one-time link in her inbox to prove the address is hers, before any order mail depends on it.

In practice

Say a shopper mistypes her email when signing up to order a made-to-order abaya with custom sleeve length, putting a stranger's address by accident. You do not want order confirmations and reset links going to the wrong inbox.

How Angelite handles it: right after registering she sees a "please verify your email" page, and a confirmation link is sent to whatever address she typed. Only by opening that inbox and clicking the link is the address marked as verified, which proves it truly belongs to her. If the email never shows up (because the address was wrong), she can correct it and request a fresh link from the verification page, so mistyped addresses never quietly stay attached to an account.

How to use it

  1. After registering, the shopper sees a "please verify your email" page.
  2. They open the verification email and click the link inside it.
  3. The address is confirmed and they continue into the store.
  4. If the email never arrived, they can request a fresh link from the verification page.

Good to know: the link works once and expires, so an old forwarded email cannot be misused, and a fresh link can always be sent.

Two-factor authentication

CustomerAdmin

The problem: your admin password could leak tomorrow, reused on another site, phished, or read off a note by the till, and that one password can change prices, issue refunds and export your customer list.

An optional second lock on top of the password. Once turned on, signing in also asks for a fresh six-digit number from a code app on your phone, so a stolen password alone is not enough to get in.

In practice

Imagine you run the shop and your admin account can change prices, issue refunds and export customer lists. A leaked password would be a serious problem, so you want a second lock on the door.

How Angelite handles it: in the Security settings you choose Enable two-factor, scan the on-screen QR code with a code app on your phone (one that shows a fresh six-digit number), and save the recovery codes somewhere safe. From then on, every sign-in asks for the current number from the app, so even if someone learned your password they still could not get in without your phone. If you ever lose the phone, one of the saved recovery codes lets you back in.

How to use it

  1. Open the security settings and choose Enable two-factor.
  2. Scan the on-screen QR code with a code app on your phone (for example Google Authenticator or Authy).
  3. Save the recovery codes that are shown somewhere safe, in case the phone is lost.
  4. Enter the current six-digit number from the app to confirm, and two-factor is now active.
  5. From then on, every sign-in asks for a fresh number (or a recovery code if the phone is unavailable).
Admin security settings with two-factor setup
Where: the Security settings page, where two-factor is turned on and recovery codes are shown.

Good to know: recovery codes are single-use. Keep them safe; each one lets you sign in once if you cannot reach the code app on your phone.

Password confirmation

CustomerAdmin

The problem: you step away from the counter and the admin stays open on the screen. One idle minute is all a passer-by needs to quietly switch off the very settings that protect the shop.

An extra check before the most sensitive actions, such as turning two-factor on or off. Even while signed in, the user is asked to re-enter their current password, proving it is really them at the keyboard and not whoever found the screen unlocked.

In practice

Say you step away from the counter for a coffee and leave the admin open on the screen. Someone could wander up and try to switch off your two-factor protection while you are gone.

How Angelite handles it: the moment a sensitive action is started, such as managing two-factor settings, a short confirm your password prompt appears and the current password must be typed in again. A passer-by who does not know your password is stopped right there, even though the screen was already signed in. Once you have confirmed, you are not pestered again for a few hours, so it stays out of the way during a normal shift.

How to use it

  1. Start a sensitive action (for example managing two-factor settings).
  2. If it has been a while since you last confirmed, a short "confirm your password" prompt appears.
  3. Enter your current password to continue.
  4. The original action then proceeds as normal.

Good to know: once confirmed, you are not asked again for a few hours, so it stays out of the way during normal work.

Credential-change safety

CustomerAdmin

The problem: a password change that does not evict whoever is already inside is no fix at all. The forgotten session on a shared tablet, or an intruder who got in once, would simply carry on as if nothing happened.

Changing the login email or password is treated as a security event. On save she is signed out everywhere else, and changing the email needs the current password and quietly alerts the old address, so nobody can silently take over an account.

In practice

A customer realises she once signed in on a shared family tablet and never logged out. Worried, she changes her password from her own phone to lock that old session out.

How Angelite handles it: she updates her password in account settings, and on save Angelite keeps her signed in on the phone she is using but logs out every other device, including that forgotten tablet session. If instead she changes her login email, Angelite first asks for her current password as a check, sends a verification link to the new address, and quietly notifies the old address so a hijacker can never swap the email in silence. This is why a password change can sign you out elsewhere: it is deliberate, so a stolen session cannot outlive the change.

How to use it

  1. Open your profile or account settings and update your password (or your login email).
  2. Changing the email asks you to re-enter your current password as a safety check.
  3. On save, you stay signed in on the device you are using, but every other session is logged out.
  4. For an email change, a new verification link goes to the new address and a heads-up goes to the old one.

Good to know: this is why a password change can sign you out of your phone or another browser; it is deliberate, so a stolen session cannot outlive the change.

Staff access & operations

Staff users & roles

Admin

The problem: you cannot run the shop alone, but delegating should not mean handing over the keys. A seasonal packer needs to move orders along; she does not need to see payout details, change prices or delete your catalogue.

Create accounts for your team and decide exactly what each person can do. Roles range from full Admin down to a read-mostly Shop Manager, and you can fine-tune a single person's permissions on top of their role. A lower-ranked staffer can never edit or delete a more privileged account, and customer accounts never appear here.

In practice

Say the Eid rush is coming and you hire a temporary sales assistant for a month. She needs to process and pack orders, but she absolutely must not be able to change prices, delete listings from the catalogue, or see staff permissions.

How Angelite handles it: you open Users, click Add user, enter her details and pick the Shop manager role. She can now sign in, view products and orders and move orders along their status, but the price fields, delete buttons and permission matrix simply are not available to her. When her month ends you open her record and remove the account in a click, with no risk that she ever touched anything she should not have.

How to use it

  1. Open Users to see your staff, each with their name, email and role.
  2. Click Add user to create a new staff member: enter their details and pick a role (you can only assign roles at or below your own level).
  3. Open any staff member to review their account, change their role, or toggle individual permissions in the permission matrix.
  4. Save. The new permissions take effect the next time that person uses the admin.
Admin users list
Where: Users, the staff-only directory.
Admin create user form
Where: the Add user form, with the role chooser.
Admin user detail with permission matrix
Where: a staff member's page, where you tune their role and individual permissions.
RoleWhat they can doWhy it exists
Admin Full access to everything: products, orders, customers, refunds, settings, integrations, staff accounts and permissions, the audit log and every report. Nothing is hidden from an Admin. This is the owner's own account, or a fully trusted business partner. Someone has to be able to configure the whole shop and grant access to others, so there is always at least one Admin.
Manager Almost the same reach as an Admin across day-to-day running, but cannot delete shipping settings and cannot manage other people's permissions. For a trusted store manager who runs the shop end to end yet should not be able to rewire the permission system or tear down shipping configuration, keeping those two high-stakes levers with the owner.
Employer Operational hands-on work: create and edit products (but not delete them), handle the full order flow, manage customers, and do basic user management for the team. For a senior staff member or floor supervisor who lists new abaya collections, looks after orders and customers daily, but should not be able to permanently delete catalogue listings.
Shop manager Mostly read-only: view products, view orders, and move an order along its status (for example from paid to packed to shipped). No price changes, no deletes, no settings. For a seasonal or part-time sales assistant who needs to process and fulfil orders during a busy period but must never change prices or delete data.
Customer Storefront and their own account only: browse and buy, track their own orders, manage their addresses, favourites, loyalty and store credit. No admin access at all. This is every shopper. It exists so customers can fully self-serve their own account while being completely walled off from the back office.

Good to know: the team hierarchy is always respected. A lower-ranked staff member can never edit or delete a more privileged account, and you can only grant a permission you hold yourself, so nobody can quietly promote themselves or another person above their own level.

No more guessing who made a change

Admin

The problem: a price is suddenly wrong, a product has vanished, and nobody remembers touching it. Without a record, the mystery turns into a guessing game and awkward questions for the whole team.

A complete, searchable record of who changed what. Every create, update and delete made by a signed-in user is captured, and any entry opens into the exact before-and-after of each field that changed, so a mistake or a disputed change always has a clear author and an exact time.

In practice

Say you notice a made-to-order wedding abaya that was priced at 4,200 riyals is suddenly showing as 420 riyals on the storefront, and a customer has already ordered three. You need to know who changed the price, when, and what it was before.

How Angelite handles it: you open the Audit Log under the System area, search for that product or filter to price updates, and find the entry. It names the staff member, the exact time, and shows the before-and-after for the price field (4,200 down to 420), so you can see it was a missed digit rather than anything malicious, correct the price and have a quiet word. Every edit across the shop leaves the same kind of trail.

How to use it

  1. Open Audit Log under the System area.
  2. Browse the time-ordered list of changes, each showing the action, the record, the person and the time.
  3. Use the search box and the event filter to narrow down to what you are looking for.
  4. Click an entry's changes to open the full before-and-after detail for every field.
Admin audit log
Where: System → Audit Log.

Good to know: passwords and card numbers never appear in the log, and the Audit Log is available to Admin and Manager.

Background jobs monitor

Admin / Manager Optional · Background Jobs

The problem: the store does invisible work all day, sending confirmations, receipts and campaign emails, and when that work quietly stalls, the first you hear of it is a frustrated customer days later.

A live window over that background work. Stat cards summarise what is queued, running and failed, tabs let you dig into the Queued, Failed and Batches lists, and admins can retry or clear failed work in minutes; managers get a read-only view.

In practice

Say you send an Eid promotion to your whole subscriber list, but a few customers phone in saying they never received their order confirmation that morning. You suspect some background emails got stuck.

How Angelite handles it: you open Jobs under the Access & Security area and glance at the stat cards, where the Failed count is higher than usual. You switch to the Failed tab, click a failed job to read why it failed (for example the email provider briefly timed out), and once the provider is healthy again you click Retry all to resend the stuck confirmations. The list refreshes on its own so you can watch the failures clear, and every retry is recorded in the Audit Log.

How to use it

  1. Open Jobs under the System area.
  2. Glance at the stat cards (Queued, Running, Failed, Batches) for the overall picture.
  3. Switch between the Queued, Failed and Batches tabs, using the queue filter and search to narrow the list.
  4. On a failed job, click the error to read the full details; admins can Retry or Delete a job, or Retry all / Flush old in bulk.
  5. The list auto-refreshes every few seconds; a Refresh button forces an immediate update.
Admin background jobs monitor
Where: System → Jobs (visible when the Jobs module is on).

Optional module: switch the Jobs monitor on or off under Settings → Features. Every retry or flush is recorded in the Audit Log.

Angelite · Platform Feature GuideChapter 06 · Authentication & Access