Security Profiles
Security Profiles are named groups that define access levels in APD. They control which actions, content, and data users can access.
What Are Security Profiles?
Security profiles are:
- Named access levels (e.g., ADMIN, CUSTOMER)
- Assigned to users
- Referenced by actions and content
- Used in template conditions
Creating Security Profiles
Accessing Security Profiles
- Open the Advanced Portal Designer menu page (search for it in Tell Me) and click Security Profiles
- View and manage profiles
Profile Properties
| Field | Description |
|---|---|
| Security Profile | Unique code (e.g., ADMIN) |
| Description | Friendly name |
Creating a Profile
- Open Security Profiles
- Click New
- Enter a Security Profile code
- Add a Description
- Save
Example Profiles
| Profile | Description | Purpose |
|---|---|---|
| ADMIN | Administrator | Full portal access |
| MANAGER | Manager | Reports and approvals |
| SALES | Sales Team | Customer and order access |
| CUSTOMER | External Customer | Self-service access |
| PREMIUM | Premium Customer | Extended features |
| READONLY | Read Only | View-only access |
Assigning Profiles to Users
User Security Filters
Users have a "Security Filters" field that contains their assigned profiles:
CUSTOMER|PREMIUM
| Multiple profiles are separated by ` | `. |
|---|
Assignment Steps
- Open APD Users
- Select a user
- In Security Filters field, enter profile(s)
- Save
Profile Inheritance
- Users with multiple profiles have cumulative access
- Access is granted if ANY assigned profile permits it
- Blank profile means "all authenticated users"
Using Profiles in Actions
Action Security Profile
Each action can require a specific profile:
- Open the action
- Set Security Profile field
- Save
Behavior
- Blank: All authenticated users can access
- Specified: Only users with that profile can access
- Non-matching users redirected to default action
Example
Action: ADMIN-PANEL
Security Profile: ADMIN
Require Authentication: Yes
Only users with ADMIN profile can access this action.
Using Profiles in Templates
profile Tag
Check if user has a profile:
<?profile(ADMIN)?>
<a href="<?action(ADMIN)?>">Admin Panel</a>
<?endif?>
Profile with Else
<?profile(PREMIUM)?>
<div class="premium-content">
Premium features here
</div>
<?else?>
<div class="upgrade-prompt">
<a href="<?action(UPGRADE)?>">Upgrade to Premium</a>
</div>
<?endif?>
Multiple Profile Checks
<?profile(ADMIN)?>
<span class="badge">Admin</span>
<?endif?>
<?profile(MANAGER)?>
<span class="badge">Manager</span>
<?endif?>
<?profile(SALES)?>
<span class="badge">Sales</span>
<?endif?>
Using Profiles in Content
Content Security Profile
Content items can have a security profile:
- Open Content List
- Select content item
- Set Security Profile field
- Save
Behavior
- Blank: All authenticated users can view
- Specified: Only users with that profile can view
- Content is simply not displayed if no access
Using Profiles in Security Setup
Profile-Specific Filters
Security filters can be profile-specific:
Profile: CUSTOMER
Security Type: Security Filter
Table: Sales Header
Field: Sell-to Customer No.
Value: %4
This filter only applies to users with CUSTOMER profile.
Profile-Specific Permissions
Table permissions can be profile-specific:
Profile: SALES
Table: Customer
Allow Ajax Read: Yes
Allow Ajax Validate/Modify: Yes
Allow Ajax Insert: No
Profile Hierarchy Patterns
Role-Based Access
ADMIN
├── Full access to all actions
├── All security filters disabled
└── All AJAX operations allowed
MANAGER
├── Access to reports and approvals
├── Limited security filters
└── Read/modify allowed, limited insert
SALES
├── Access to customer and order actions
├── Security filters on company data
└── Standard CRUD on sales data
CUSTOMER
├── Access to self-service actions only
├── Strict security filters (own data only)
└── Limited AJAX (view, some updates)
Feature-Based Access
BASIC
└── Standard portal features
PREMIUM
└── Premium features (includes BASIC access)
ENTERPRISE
└── Enterprise features (includes PREMIUM access)
Profile Naming Conventions
Recommendations
- Use UPPERCASE for profile codes
- Keep codes short but meaningful
- Be consistent across the portal
Examples
| Code | Description |
|---|---|
| ADM | Administrator |
| MGR | Manager |
| SLS | Sales |
| CST | Customer |
| VND | Vendor |
| PRE | Premium |
| ENT | Enterprise |
Common Patterns
Public + Authenticated
<!-- Available to everyone -->
<nav>
<a href="<?action(HOME)?>">Home</a>
<a href="<?action(PRODUCTS)?>">Products</a>
</nav>
<!-- Only for authenticated users -->
<?auth?>
<nav class="user-nav">
<a href="<?action(DASHBOARD)?>">Dashboard</a>
<?profile(ADMIN)?>
<a href="<?action(ADMIN)?>">Admin</a>
<?endif?>
</nav>
<?endif?>
Tiered Features
<div class="features">
<!-- Basic features for all authenticated -->
<div class="feature">Basic Feature</div>
<?profile(PREMIUM)?>
<div class="feature premium">Premium Feature</div>
<?endif?>
<?profile(ENTERPRISE)?>
<div class="feature enterprise">Enterprise Feature</div>
<?endif?>
</div>
Role-Specific Navigation
APD includes templates with the <?parse?> tag (there is no <?include?> tag):
<nav class="main-menu">
<?profile(ADMIN)?>
<?parse(nav-admin)?>
<?endif?>
<?profile(MANAGER)?>
<?parse(nav-manager)?>
<?endif?>
<?profile(SALES)?>
<?parse(nav-sales)?>
<?endif?>
<?profile(CUSTOMER)?>
<?parse(nav-customer)?>
<?endif?>
</nav>
Troubleshooting
User Can't Access Action
- Verify user is authenticated
- Check action's Security Profile setting
- Verify user's Security Filters includes the profile
- Check for typos in profile codes
Profile Not Working in Template
- Verify exact profile code match
- Check user assignment
- Test with simpler condition first
Too Much/Little Access
- Review all assigned profiles
- Check profile in Security Setup entries
- Review action security settings
Best Practices
Keep Profiles Simple
- Don't create too many profiles
- Group related access together
- Avoid overlapping responsibilities
Document Profiles
Create a reference document:
| Profile | Access | Users |
|---|---|---|
| ADMIN | Full | IT Staff |
| MANAGER | Reports | Department Heads |
| SALES | Sales Data | Sales Team |
| CUSTOMER | Self-Service | External Customers |
Test Profile Access
- Create test users for each profile
- Verify access at all levels
- Test profile combinations
Review Regularly
- Audit profile assignments
- Remove unused profiles
- Update access as needs change