Appearance
Current Workspace Mixin
File Information
- Path:
mixins/currentWorkspace.js - Purpose: Workspace ID management and authentication context
Overview
The Current Workspace mixin provides easy access to the current workspace ID and authentication context. It automatically determines the workspace ID from either the authentication object or route parameters, and updates when the route changes.
Key Features
Workspace ID Access
- Automatic workspace ID detection
- Route parameter fallback
- Authentication context support
Reactive Updates
- Watches route parameters
- Updates workspace ID on route change
- Maintains authentication context
Authentication Integration
- Accesses authentication object
- Uses auth ID if available
- Falls back to route params
Data Properties
javascript
{
auth: object|null // Authentication object from $_auth() helper
}Computed Properties
workspaceId
Returns current workspace ID:
- First checks
auth.idif authentication object exists - Falls back to
$route.params.workspace_id - Returns workspace ID string
Logic:
javascript
workspaceId() {
return this.auth ? this.auth.id : this.$route.params.workspace_id
}Watchers
$route.params
Watches route parameter changes:
- Updates
authobject when route changes - Re-evaluates workspace ID
- Maintains current workspace context
Usage Examples
Basic Usage
vue
<script>
import currentWorkspace from '~/mixins/currentWorkspace'
export default {
mixins: [currentWorkspace],
methods: {
async fetchData() {
// Use workspaceId computed property
const response = await this.$axios.get(
`/api/workspaces/${this.workspaceId}/assets`
)
return response.data
}
}
}
</script>In Template
vue
<template>
<div>
<p>Current Workspace: {{ workspaceId }}</p>
<button @click="loadWorkspaceData">Load Data</button>
</div>
</template>
<script>
import currentWorkspace from '~/mixins/currentWorkspace'
export default {
mixins: [currentWorkspace],
methods: {
async loadWorkspaceData() {
const data = await this.$axios.get(
`/api/workspaces/${this.workspaceId}/data`
)
// Handle data
}
}
}
</script>With API Calls
vue
<script>
import currentWorkspace from '~/mixins/currentWorkspace'
export default {
mixins: [currentWorkspace],
async mounted() {
// Workspace ID automatically available
await this.loadAssets()
},
methods: {
async loadAssets() {
try {
const response = await this.$axios.get(
`/api/workspaces/${this.workspaceId}/dam/assets`
)
this.assets = response.data
} catch (error) {
this.$snackbar.error('Failed to load assets')
}
}
}
}
</script>Authentication Helper
The mixin uses $_auth() helper function:
- Returns authentication object if available
- Contains workspace/user information
- Updated on route changes
Route Parameter Fallback
If authentication object is not available:
- Uses
$route.params.workspace_id - Works with dynamic routes
- Updates automatically on route change
Integration Points
- All Pages: Workspace-scoped pages
- API Calls: Workspace-specific endpoints
- Store: Workspace state management
- Components: Workspace context
Notes for Development
- Mixin provides simple workspace ID access
- Automatically handles route changes
- Supports both auth-based and route-based workspace ID
- Reactive to route parameter changes
- Minimal overhead, just computed property
Related Documentation
- Common Functions Mixin - Common utilities
- Route Params Mixin - Route utilities
- Store Documentation - State management
- Middleware Documentation - Route protection