Skip to content

Commit

Permalink
Merge branch 'main' into @chrispader/restructure-styles-and-theme-swi…
Browse files Browse the repository at this point in the history
…tching
  • Loading branch information
Christoph Pader committed Dec 13, 2023
2 parents b45ad2f + 5125df6 commit fd71747
Show file tree
Hide file tree
Showing 298 changed files with 5,159 additions and 3,001 deletions.
5 changes: 5 additions & 0 deletions .github/actions/composite/setupGitForOSBotifyApp/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ runs:
if: runner.debug == '1'
run: echo "GIT_TRACE=true" >> "$GITHUB_ENV"

- name: Sync clock
shell: bash
run: sudo sntp -sS time.windows.com
if: runner.os == 'macOS'

- name: Generate a token
id: generateToken
uses: actions/create-github-app-token@9d97a4282b2c51a2f4f0465b9326399f53c890d4
Expand Down
12 changes: 2 additions & 10 deletions .github/workflows/createNewVersion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,6 @@ on:
OS_BOTIFY_COMMIT_TOKEN:
description: OSBotify personal access token, used to workaround committing to protected branch
required: true
OS_BOTIFY_APP_ID:
description: Application ID for OS Botify App
required: true
OS_BOTIFY_PRIVATE_KEY:
description: OSBotify private key
required: true

jobs:
validateActor:
Expand Down Expand Up @@ -76,18 +70,16 @@ jobs:
token: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}

- name: Setup git for OSBotify
uses: ./.github/actions/composite/setupGitForOSBotifyApp
uses: ./.github/actions/composite/setupGitForOSBotify
id: setupGitForOSBotify
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}

- name: Generate version
id: bumpVersion
uses: ./.github/actions/javascript/bumpVersion
with:
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
SEMVER_LEVEL: ${{ inputs.SEMVER_LEVEL }}

- name: Commit new version
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/reassurePerformanceTests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ jobs:
- name: Setup NodeJS
uses: ./.github/actions/composite/setupNode

- name: Set dummy git credentials
run: |
git config --global user.email "test@test.com"
git config --global user.name "Test"
- name: Run performance testing script
shell: bash
run: |
Expand All @@ -27,6 +32,7 @@ jobs:
npm install --force
npx reassure --baseline
git switch --force --detach -
git merge --no-commit --allow-unrelated-histories "$BASELINE_BRANCH" -X ours
npm install --force
npx reassure --branch
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001041101
versionName "1.4.11-1"
versionCode 1001041200
versionName "1.4.12-0"
}

flavorDimensions "default"
Expand Down
8 changes: 8 additions & 0 deletions assets/images/thumbs-up.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 15 additions & 15 deletions desktop/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"electron-context-menu": "^2.3.0",
"electron-log": "^4.4.7",
"electron-serve": "^1.0.0",
"electron-updater": "^6.1.4",
"electron-updater": "^6.1.6",
"node-machine-id": "^1.1.12"
},
"author": "Expensify, Inc.",
Expand Down
5 changes: 0 additions & 5 deletions docs/_includes/floating-concierge-button.html

This file was deleted.

5 changes: 0 additions & 5 deletions docs/_includes/platform.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,4 @@ <h1 class="title">{{ platform.hub-title }}</h1>
{% include hub-card.html hub=hub platform=selectedPlatform %}
{% endfor %}
</div>

<div class="cards-group">
<!-- Concierge button anchored globally (rendered on narrow screens) -->
{% include floating-concierge-button.html id="floating-concierge-button-global" %}
</div>
</div>
3 changes: 0 additions & 3 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,6 @@
<div class="article-toc"></div>
{% endif %}
</div>

<!-- Concierge button anchored at the bottom of the LHN (rendered on wider screens) -->
{% include floating-concierge-button.html id="floating-concierge-button-lhn" %}
</div>

<div id="content-area">
Expand Down
30 changes: 0 additions & 30 deletions docs/_sass/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -712,41 +712,11 @@ button {
}
}

#floating-concierge-button-global {
position: fixed;
display: block;
@include breakpoint($breakpoint-tablet) {
display: none;
}
}

#floating-concierge-button-lhn {
position: absolute;
display: none;
@include breakpoint($breakpoint-tablet) {
display: block;
}
}

.get-help {
flex-wrap: wrap;
margin-top: 40px;
}

.floating-concierge-button {
bottom: 2rem;
right: 2rem;

img {
width: 4rem;
height: 4rem;

&:hover {
filter: saturate(2);
}
}
}

.disable-scrollbar {
@media screen and (max-width: $breakpoint-tablet) {
overflow: hidden;
Expand Down

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions docs/articles/expensify-classic/getting-started/Mobile-App.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,140 @@
---
title: Coming Soon
description: Coming Soon
title: Domains
description: Want to gain greater control over your company settings in Expensify? Read on to find out more about our Domains feature and how it can help you save time and effort when managing your company expenses.
---
## Resource Coming Soon!

# Overview
Domains is a feature in Expensify that allows admins to have more nuanced control over a specific Expensify activity, as well as providing a bird’s eye view of company card expenditure. Think of it as your command center for things like managing user account access, enforcing stricter Workspace rules for certain groups, or issuing cards and reconciling statements.
There are several settings within Domains that you can configure so that you have more control and visibility into your organization’s settings. Those features are:
- Company Cards
- Domain Admins
- Domain Members
- Two-Factor Authentication
- Domain Groups
- Domain Group Settings
- Reporting Tools
- SAML

There are two ways to use Domains – as an unverified domain or a verified domain. An unverified domain allows you to import Company Cards and manage them, whereas a verified domain allows you to do that in addition to:
1. Receive vendor bills in Expensify
2. Fine-tune user restrictions using domain Groups
3. Configure SAML SSO for easier login to Expensify
4. Set vacation delegates for your domain members
5. Use consolidated domain billing

# How to claim a domain
To use the domains feature with an unverified domain, you’ll need to claim the domain first.
To claim a domain, you need to be a Workspace Admin with a company email address. This allows you to manage company bills, company cards, and reconciliation. Claiming requires an email matching your company's domain.
1. Create an Expensify account
2. Set up an expense Workspace
3. Go to **Settings > _Domains_**.
Whichever member runs through those steps will automatically be made a Domain Admin.


# How to verify a domain
To use the domains feature with a verified domain, you’ll want to go through the steps of verifying it.

To verify domain ownership, follow these steps:
1. Log in to your DNS service provider, which could be your Domain Name Registrar like NameCheap or GoDaddy, a dedicated DNS service provider like DNSMadeEasy or Amazon Route53, or managed internally by your company's IT department.
2. Find the page for editing DNS records for expensify.com. This might be labeled as DNS Management or Zone File Editor.
3. Add a new TXT record and set the value as: **532F6180D8**
4. Save your changes
5. Click the Verify button to confirm domain ownership

After successful verification, you can remove the TXT DNS record. Please note that an email will be sent to all Expensify users on the domain to inform them that their accounts will be under Domain Control after verification.

**Tips:**
Not sure how to do this? Check the below guides from some of the most popular hosts on the web:
[123-reg.co.uk](https://www.123-reg.co.uk/)
[One.com](https://www.one.com/en/)
[Wix.com](https://www.wix.com/)
Google/GSuite
[Godaddy](https://www.godaddy.com/)
When creating the TXT record, input only the code and no other values or information.
You can always confirm if you added the TXT code correctly here: https://viewdns.info/dnsrecord/?domain=[enterdomainhere]

# Domain settings

## Domain Admins
Domain Admins have full authority over domain settings. They can modify member group names and rules, link or modify Company Cards, and add or remove domain members and other admins.

### Adding a Domain Admin
1. Head to **Settings > Domains > [Domain Name] > Domain Admins**
2. In the "Email or Phone" field, type in the email address of the person you want to make a Domain Admin (this can be any email not specifically tied to the domain)
3. Click "Add Admin"

### Removing a Domain Admin:
1. If you're already a Domain Admin, go to **Settings > Domains > [Domain Name] > Domain Admins**
2. Locate the list of Domain Admins and find the one you want to remove
3. Next to the Domain Admin's name, click the red trash can icon. This will remove that person from the Domain Admin role

## Domain Members
A domain member is a user associated with a specific domain (usually a company or another group) in Expensify and typically managed by a Domain Admin. This is also where you can enable Two-Factor authentication for your domain.

### Adding users to the domain
When a Domain Admin adds a user to the domain, that will create a new Expensify account for that user, and they'll receive invitations to set up their account. Users can also join a verified domain by creating their own account, as long as they have an email address associated with that domain (e.g. yourname@yourcompany.com). Once they have verified the account, all Domain Admins will be notified, and the employee will be added to the Default Group.
**Important Note:** If someone who isn't a Domain Admin invites a user to a Workspace before they're invited to the domain, their account will be created, but in a closed state. A closed state means that the account cannot be used until it has been validated. Once the Domain Admin has invited the user, the user will receive a magic link to verify their account, sign in, and open the account completely.

### How to add users
1. In your web account, go to **Settings > Domains > [Domain Name] > Domain Admins**
2. In the email field, enter the user you want to invite. This will create their Expensify account and send them an invitation

### Removing users from the Domain
Removing a user means taking them out of your domain and closing their Expensify account completely if they don't have another login. Be cautious because closing an account is permanent and deletes any unsubmitted or processing reports.

### How to remove users
In your web account, go to **Settings > Domains > [Domain Name] > Domain Admins**
Check the box next to the employee's name you want to remove, then click “Close Accounts”.

### Important notes about closing accounts through Domain settings:
If a user has a Secondary Login linked to their Expensify account, they can still access their account after it's closed in the domain. This is helpful for accessing financial data, like tax-related receipts.
Closing an account through the domain permanently removes any unsubmitted receipts/reports. Make sure to approve or reimburse all employee reports before closing an account.
If an employee doesn't have a Secondary Login, they'll be automatically removed from the group Workspace. If they have a Secondary Login, it will continue to be associated with the group Workspace.

## Domain Groups
Domain Groups can be accessed if you have verified your domain. Groups are used to set rules or permissions for groups of users so you can enforce multiple different expense workspaces and rules. If you are a Domain Admin, you can create and edit Domain Groups under **Settings > Domains > _Domain Name_ > Groups**.

### Creating Domain Groups
1. In your Expensify account on the web, navigate to **Settings > Domains > _Domain Name_ > Groups**
2. Select “Create Group” to create the group. This will allow you to name the Group, as well as configure permissions that will apply to members of the Group.

### Adding members to a Domain Group
1. In your Expensify account on the web, navigate to **Settings > Domains > [Domain Name] > Domain Members**
2. Select the checkbox next to the domain members you wish to add to the Domain Group
3. Select “Add to Group” to select the Group you wish to add them to

### Editing Domain Groups
1. In your Expensify account on the web, navigate to **Settings > Domains > _Domain Name_ > Groups**
2. Next to the Group you wish to edit, select “Edit”
3. This will open the Edit Permission Group pane, where you can edit the rules and permissions for that group
4. Make your edits and click “Save”

## Domain Group settings
These are the settings that can be customized for each group you have created. Typically, companies use two groups (Employees and Managers) and enforce stricter rules for Employees. The settings are:
- Strict Workspace Enforcement: When enabled, all Workspace rules must be followed for a report to be submitted. If a rule is violated, the report can't be submitted until the issue is fixed. Employees can't bypass this by dismissing notifications.
- Login Restrictions: Enabling this prevents users from using non-company email addresses as their primary login. Secondary logins are still allowed.
- Workspace Creation and Removal Restrictions: This feature stops users from creating new group workspaces or unsubscribing from existing workspaces. Admins who need these abilities should be in a separate group with this restriction turned off.
- Preferred Workspace: When enabled, group members can only create reports under one designated Workspace. They can move a report to a different Workspace or their personal one later if needed. This helps keep personal and company expenses separate. If a company card uses a specific Workspace, this setting overrides it for more control over company card expenses.
- Setting a Preferred Workspace: If Preferred Workspace is on, you can choose a default group Workspace for all Group Members.

## SAML
To enable SAML SSO in Expensify you will first need to claim and verify your domain. Once you have a verified domain, you can access SAML SSO by navigating to **Settings > Domains > _Domain Name_ > SAML**

## Enable Two-Factor Authentication (2FA)
1. As a Domain Admin, head to: **Settings > Domains > _Your Domain Name_ > Domain Members**
2. Turn on Two Factor Authentication by toggling it to ENABLED
3. Any Domain members that do not have two-factor authentication enabled will be asked to set it up on their Home page when they next log in, and won't be able to use Expensify until they do.
4. To turn it off, simply toggle it off and refresh the page.

**Tips:**
- When using SAML, two-factor authentication cannot be required.
- For disputing digital Expensify Card purchases, two-factor authentication must be enabled.
- It might take up to 2 hours for domain-level enforcement to take effect, and users will be prompted to configure their individual 2FA settings on their next login to Expensify.

# FAQ

## How many domains can I have?
You can manage multiple domains by adding them through **Settings > Domains > New Domain**. However, to verify additional domains, you must be a Workspace Admin on a Control Workspace. Keep in mind that the Collect plan allows verification for just one domain.

## What’s the difference between claiming a domain and verifying a domain?
Claiming a domain is limited to users with matching email domains, and allows Workspace Admins with a company email to manage bills, company cards, and reconciliation. Verifying a domain offers extra features and security.
Loading

0 comments on commit fd71747

Please sign in to comment.