Static dialin pin
Fixes #
Type
- Bugfix
- Feature
- Documentation
- Refactoring (e.g. Style updates, Test implementation, etc.)
- Other (please describe):
Checklist
- [x] Code updated to current develop branch head
- [ ] Passes CI checks
- [ ] Is a part of an issue
- [ ] Tests added for the bugfix or newly implemented feature, describe below why if not
- [ ] Changelog is updated
- [ ] Documentation of code and features exists
Changes
We have everyday on small meeting, if someone is on the road he must dialin via phone. Currently BBB create on every new Meeting a new random dialin pin. So for specified Meetings we need a fixed PIN that never changed.
This Change bringt a new Room Field:
Other information
Summary by CodeRabbit
-
New Features
- Introduced dial-in PIN functionality for rooms, allowing generation, assignment, and validation of a unique 5-digit PIN.
- Added support for dial-in PIN settings at both room and room type levels, including enforcement and default options.
- New UI components and form fields for managing dial-in PINs in room and admin settings.
- Dial-in PIN is now included in meeting creation parameters and room settings displays.
-
Localization
- Added English and German translations for all new dial-in PIN related labels, messages, and validation attributes.
-
Bug Fixes
- Ensured proper validation and uniqueness of dial-in PINs when creating or updating rooms.
## Walkthrough
This change introduces a "dial-in PIN" feature for rooms, including backend support, validation, database schema updates, API resource adjustments, and frontend UI components. It adds new settings for room types and rooms, validation logic, translations, and UI elements for managing and displaying dial-in PINs, including enforcement and default behaviors.
## Changes
| Files / Group | Change Summary |
|--------------------------------------------------------------------------------------------------------------|---------------|
| `database/migrations/2025_05_05_222245_add_dialin_pin_to_rooms_table.php` | Adds `dialin_pin` column to `rooms` table and `has_dialin_pin_enforced`, `has_dialin_pin_default` columns to `room_types` table. |
| `app/Models/Room.php`<br>`app/Models/RoomType.php` | Adds attribute casting for `dialin_pin` (as integer) in Room and for `has_dialin_pin_default`/`has_dialin_pin_enforced` (as boolean) in RoomType. |
| `app/Http/Controllers/api/v1/RoomController.php` | Generates and updates `dialin_pin` in store and update methods based on room type settings. |
| `app/Http/Controllers/api/v1/RoomTypeController.php` | Handles `has_dialin_pin_default` and `has_dialin_pin_enforced` in store and update methods. |
| `app/Http/Requests/RoomTypeRequest.php` | Adds validation rules and attribute names for `has_dialin_pin_default` and `has_dialin_pin_enforced`. |
| `app/Http/Requests/UpdateRoomSettings.php` | Adds validation for `dialin_pin` with dynamic rules based on room type; new private method for rule generation. |
| `app/Http/Resources/RoomSettings.php` | Adds `dialin_pin` to the resource output array. |
| `app/Http/Resources/RoomType.php` | Adds `has_dialin_pin_default` and `has_dialin_pin_enforced` to default room settings output. |
| `app/Services/MeetingService.php` | Sets `voiceBridge` parameter using room's `dialin_pin` when starting a meeting. |
| `resources/js/components/RoomTabSettings.vue` | Adds dial-in PIN input to advanced room settings form. |
| `resources/js/components/RoomTabSettingsDialinPinInput.vue` | New component for dial-in PIN input, generation, enforcement/prohibition display, and error handling. |
| `resources/js/composables/useRoomTypeSettings.js` | Adds dial-in PIN switch to advanced room type settings. |
| `resources/js/constants/roomSettings.js` | Adds `dialin_pin` as an expert room setting. |
| `resources/js/views/AdminRoomTypesView.vue` | Adds UI controls for `has_dialin_pin_default` and `has_dialin_pin_enforced` in room type admin view. |
| `lang/en/rooms.php`<br>`lang/de/rooms.php` | Adds localization entries for dial-in PIN feature and related UI messages. |
| `lang/en/validation.php`<br>`lang/de/validation.php` | Adds attribute translations for `dialin_pin` and `has_dialin_pin`. |
## Sequence Diagram(s)
```mermaid
sequenceDiagram
participant Admin as Admin User
participant AdminUI as AdminRoomTypesView.vue
participant API as RoomTypeController
participant DB as Database
Admin->>AdminUI: Toggle "Has Dialin PIN" / "Enforced" switches
AdminUI->>API: POST/PUT room type with dialin PIN settings
API->>DB: Update room_types (has_dialin_pin_default, has_dialin_pin_enforced)
API-->>AdminUI: Confirmation/updated room type
participant User as User
participant RoomUI as RoomTabSettings.vue
participant RoomAPI as RoomController
participant RoomDB as Database
User->>RoomUI: Set or generate dial-in PIN
RoomUI->>RoomAPI: POST/PUT room with dialin_pin
RoomAPI->>RoomDB: Store/Update room (dialin_pin)
RoomAPI-->>RoomUI: Confirmation/updated room
participant MeetingService as MeetingService
participant BBB as BigBlueButton
User->>MeetingService: Start meeting for room
MeetingService->>BBB: Create meeting (voiceBridge = dialin_pin)
BBB-->>MeetingService: Meeting started
Suggested labels
enhancement
<!-- walkthrough_end -->
---
<details>
<summary>📜 Recent review details</summary>
**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**
<details>
<summary>📥 Commits</summary>
Reviewing files that changed from the base of the PR and between 3f62eb61359b9e40253d6f55fbd70135ba0c1afa and b72ca718d9f789dcf343ff31dabb30f5f0b471d7.
</details>
<details>
<summary>📒 Files selected for processing (1)</summary>
* `app/Http/Requests/UpdateRoomSettings.php` (2 hunks)
</details>
<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>
* app/Http/Requests/UpdateRoomSettings.php
</details>
<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (2)</summary>
* GitHub Check: Docker Build
* GitHub Check: Backend
</details>
</details>
<!-- internal state start -->
<!-- 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 -->
<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->
<details open="true">
<summary>✨ Finishing Touches</summary>
- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings
</details>
<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->
---
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
<details>
<summary>❤️ Share</summary>
- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
</details>
<details>
<summary>🪧 Tips</summary>
### Chat
There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=THM-Health/PILOS&utm_content=2116):
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
- `I pushed a fix in commit <commit_id>, please review it.`
- `Generate unit testing code for this file.`
- `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
- `@coderabbitai generate unit testing code for this file.`
- `@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
- `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
- `@coderabbitai read src/utils.ts and generate unit testing code.`
- `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
- `@coderabbitai help me debug CodeRabbit configuration file.`
### Support
Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
### CodeRabbit Commands (Invoked using PR comments)
- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.
### Other keywords and placeholders
- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.
### CodeRabbit Configuration File (`.coderabbit.yaml`)
- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`
### Documentation and Community
- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
</details>
<!-- tips_end -->
Hello @q16marvin,
Thank you for your PR. Unfortunately, adding static dial-in PINs is not that easy to accomplish. In order to have a predictable combination of dial-in number and PIN, we need to know not only the PIN, but also the number. Since most users have not just one, but several BBB servers, they all use the same Freeswitch server with a common number. All BBB servers must then use a central dial-in plan to resolve the pin for a meeting.
Scalelite can provide such a dial-in plan, but in PILOS you can also add the servers directly, so PILOS would also need to provide a dial-in plan. The combination of other load balancers and adding servers directly makes the whole thing even more complex, the dial in plans would have to be merged by something.
In the event that other frontends can also create meetings on the same BBB server, we also need to ensure that the same number is not assigned twice, which is particularly difficult as BBB creates these numbers when they are not explicitly set. So it can happen that a meeting without a fixed PIN is assigned the same PIN by BBB as a room with a static PIN.
If I am wrong somewhere, please correct me. It's been a few days since I last dealt with this complex issue.
Hi @SamuelWei,
you are absolutly right, in big enviroments with some BBB Servers and maybe other frontends to manage this BBB Servers it can happen colliding PINs :(
we have only one BBB Server and with a freeswitch dial in. Could we add this function with a .env setting called like "PILOS_DIALIN_PIN_ENABLE = true" and this stuff is only useable if this is true and document it with the "risky in big enviroments"?
Or other Idea: BBB Servers generate Random PINs from 10000 - 99999. Pilos could use Pins from 00001 - 09999, than there would never be a conflict.
thats the last "feature" why we cant move from our self developed stupid frontend to your extrem cool frontend for BBB. So i would be realy happy if we find any compromise :)