|
| 1 | +--- |
| 2 | +slug: open-self-service-release-1.5.0 |
| 3 | +title: Open Self Service Release 1.5.0 |
| 4 | +date: 2026-01-29T12:00 |
| 5 | +tags: [releases] |
| 6 | +authors: [marcin.krasowski] |
| 7 | +toc_max_heading_level: 2 |
| 8 | +image: /img/o2s-1.5.0-header.png |
| 9 | +--- |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +We're excited to announce Release 1.5.0 of Open Self Service! This release delivers a comprehensive **Permission-Based Access Control** system that works alongside role-based access, full **ticket creation in Zendesk** with attachments and custom fields, and also an **improved development workflow** with granular watch commands for Turborepo. |
| 14 | + |
| 15 | +Let's dive into what's new! |
| 16 | + |
| 17 | +<!--truncate--> |
| 18 | + |
| 19 | +## New features |
| 20 | + |
| 21 | +### Permission-Based Access Control |
| 22 | + |
| 23 | +We've introduced a comprehensive Permission-Based Access Control system that works together with an already existing Role-Based Access Control. You now get a full, organization-level access control: roles and permissions are kept at the organization/customer level, so the same user can have different access when switching between organizations. |
| 24 | + |
| 25 | +#### Framework and core |
| 26 | + |
| 27 | +- Enhanced with abstract permission logic with methods (like `hasPermission` or `hasRole`) to check for roles and permissions. Specific integrations can now implement them on their own to provide permissions from your IAM system. |
| 28 | +- Global `RolesGuard` and `PermissionsGuard` are now available, so all protected endpoints can enforce roles and permissions consistently. |
| 29 | + |
| 30 | +#### Securing controllers with `@Permissions` |
| 31 | + |
| 32 | +Use the `@Auth.Decorators.Permissions` decorator to protect block and API endpoints by resource and actions: |
| 33 | + |
| 34 | +```typescript |
| 35 | +import { Auth } from '@o2s/framework/modules'; |
| 36 | + |
| 37 | +@Controller(URL) |
| 38 | +export class TicketListController { |
| 39 | + @Get() |
| 40 | + @Auth.Decorators.Permissions({ resource: 'tickets', actions: ['view'] }) |
| 41 | + getTicketListBlock(...) { |
| 42 | + ... |
| 43 | + } |
| 44 | +} |
| 45 | +``` |
| 46 | + |
| 47 | +You can combine `@Auth.Decorators.Roles` and `@Auth.Decorators.Permissions` on the same handler when you need both role-based and permission-based checks. |
| 48 | + |
| 49 | +#### Data filtering based on user roles |
| 50 | + |
| 51 | +Mappers (e.g., `page.mapper`, header/footer navigation mappers) can filter UI elements based on user roles. Navigation items and other CMS-driven content can be restricted by role so users only see links and sections they are allowed to access. |
| 52 | + |
| 53 | +:::tip |
| 54 | +For organization-level access control, roles vs. permissions, and multi-organization support, see [Authentication overview](../../../docs/overview/authentication) and [API Harmonization authentication](../../../docs/main-components/harmonization-app/authentication). |
| 55 | +::: |
| 56 | + |
| 57 | +### Ticket creation in Zendesk integration |
| 58 | + |
| 59 | +The [Zendesk integration](../../../docs/integrations/tickets/zendesk/overview) now supports creating tickets end-to-end, in addition to viewing and listing them. |
| 60 | + |
| 61 | + |
| 62 | + |
| 63 | +- You can now create new tickets via the Tickets API. The Zendesk integration implements `createTicket` and forwards requests to the Zendesk API. |
| 64 | + - Attachments are supported when creating tickets. |
| 65 | + - Custom field mapping is handled by the `ZendeskFieldMapper`. Configure environment variables (e.g., `ZENDESK_DEVICE_NAME_FIELD_ID`) and add corresponding entries in your CMS mappers to display custom field labels in the UI. |
| 66 | +- Using our [Survey.js form block](../../../docs/integrations/forms/surveyjs/overview), you can submit custom forms to Zendesk. This gives you full control over form layout (single- or multi-step, splitting fields into sections/columns, and more) independently of Zendesk configuration. |
| 67 | + |
| 68 | +### Dev watch task improvement |
| 69 | + |
| 70 | +The development workflow has been improved with **granular watch commands** for Turborepo: |
| 71 | + |
| 72 | +- `watch:deps`: runs `turbo watch build` for all packages except apps. Use this to build and watch dependencies (packages, integrations, blocks) so that changes propagate to apps. |
| 73 | +- `watch:apps`: runs `turbo run dev` for apps. Use this to run Next.js and Nest.js dev servers. |
| 74 | + |
| 75 | +You can run `watch:deps` in one terminal and `watch:apps` in another for a more controlled dev setup. This provides better output handling than a single monorepo-wide dev command and aligns with Turborepo’s recommended patterns for large workspaces. |
| 76 | + |
| 77 | +:::tip |
| 78 | +Prefer `npm run watch:deps` and `npm run watch:apps` over `npm run dev` when you need fine-grained control over building dependencies versus running app dev servers. |
| 79 | +::: |
| 80 | + |
| 81 | +:::info |
| 82 | +The `npm run dev` script is now **deprecated** and will be removed in future versions. |
| 83 | +::: |
| 84 | + |
| 85 | +## Other changes |
| 86 | + |
| 87 | +### Dependency updates |
| 88 | + |
| 89 | +This release includes notable dependency upgrades: |
| 90 | + |
| 91 | +- **Next.js 16.1.6** across the frontend and relevant packages, |
| 92 | +- **React** monorepo updates, |
| 93 | +- **Storybook 10.2.1**, |
| 94 | +- Other updates across the stack (e.g., recharts, swiper, next-intl) for compatibility and security. |
| 95 | + |
| 96 | +### Documentation improvements |
| 97 | + |
| 98 | +- Authentication and authorization docs now cover the new Permission-Based Access Control, organization-level access control, and when to use roles vs. permissions. |
| 99 | +- Zendesk integration docs have been updated for ticket creation, custom fields, and Survey.js-driven forms. |
| 100 | +- Various fixes and clarifications across integration and main-component documentation. |
| 101 | + |
| 102 | +### Bugfixing and security updates |
| 103 | + |
| 104 | +As always, we're committed to maintaining a stable and secure platform. This release includes various bug fixes and security updates, including dependency updates with security patches. |
0 commit comments