├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── enhancement.md │ └── feature_request.md ├── dependabot.yml └── pull_request_template.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.markdown ├── Vagrantfile ├── bbbeasy-backend ├── .gitignore ├── .php-cs-fixer.php ├── app │ ├── config │ │ ├── access-cli.ini │ │ ├── access-install.ini │ │ ├── access.ini │ │ ├── client.ini │ │ ├── config-development.sample.ini │ │ ├── config-production.sample.ini │ │ ├── config-test.ini │ │ ├── default.ini │ │ ├── routes-cli.ini │ │ ├── routes-install.ini │ │ ├── routes-test.ini │ │ ├── routes.ini │ │ ├── smtp.ini │ │ └── upload.ini │ ├── i18n │ │ └── en-GB.php │ ├── security │ │ └── dictionary │ │ │ └── en-US.json │ ├── src │ │ ├── Acl │ │ │ └── Access.php │ │ ├── Actions │ │ │ ├── Account │ │ │ │ ├── ChangePassword.php │ │ │ │ ├── Edit.php │ │ │ │ ├── GetResetPasswordToken.php │ │ │ │ ├── Login.php │ │ │ │ ├── Logout.php │ │ │ │ ├── Register.php │ │ │ │ ├── ResetPassword.php │ │ │ │ └── SetLocale.php │ │ │ ├── Base.php │ │ │ ├── Core │ │ │ │ ├── GetFile.php │ │ │ │ ├── GetLocale.php │ │ │ │ ├── HVSocket.php │ │ │ │ ├── Install.php │ │ │ │ └── Main.php │ │ │ ├── Delete.php │ │ │ ├── Labels │ │ │ │ ├── Add.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Logs │ │ │ │ ├── Clean.php │ │ │ │ └── Collect.php │ │ │ ├── Mail │ │ │ │ └── Track.php │ │ │ ├── Notification │ │ │ │ └── WarningNotification.php │ │ │ ├── PresetSettings │ │ │ │ ├── Collect.php │ │ │ │ └── Edit.php │ │ │ ├── Presets │ │ │ │ ├── Add.php │ │ │ │ ├── Copy.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ ├── EditSubcategories.php │ │ │ │ └── Index.php │ │ │ ├── Recordings │ │ │ │ ├── Collect.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Index.php │ │ │ │ └── Publish.php │ │ │ ├── RequirePrivilegeTrait.php │ │ │ ├── Roles │ │ │ │ ├── Add.php │ │ │ │ ├── Collect.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── RolesPermissions │ │ │ │ └── Collect.php │ │ │ ├── Rooms │ │ │ │ ├── Add.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Index.php │ │ │ │ ├── Start.php │ │ │ │ └── View.php │ │ │ ├── Settings │ │ │ │ ├── Collect.php │ │ │ │ ├── Edit.php │ │ │ │ └── SaveLogo.php │ │ │ ├── Users │ │ │ │ ├── Add.php │ │ │ │ ├── Collect.php │ │ │ │ ├── Delete.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ └── WebSocket │ │ │ │ └── Server.php │ │ ├── Application │ │ │ ├── Boot.php │ │ │ └── Bootstrap.php │ │ ├── Core │ │ │ └── Session.php │ │ ├── Data │ │ │ └── PresetData.php │ │ ├── Enum │ │ │ ├── CacheKey.php │ │ │ ├── Enum.php │ │ │ ├── GuestPolicy.php │ │ │ ├── Locale.php │ │ │ ├── Presets │ │ │ │ ├── Audio.php │ │ │ │ ├── Branding.php │ │ │ │ ├── BreakoutRooms.php │ │ │ │ ├── General.php │ │ │ │ ├── GuestPolicy.php │ │ │ │ ├── Language.php │ │ │ │ ├── Layout.php │ │ │ │ ├── LearningDashboard.php │ │ │ │ ├── LockSettings.php │ │ │ │ ├── Presentation.php │ │ │ │ ├── Recording.php │ │ │ │ ├── Screenshare.php │ │ │ │ ├── Security.php │ │ │ │ ├── UserExperience.php │ │ │ │ ├── Webcams.php │ │ │ │ ├── Whiteboard.php │ │ │ │ └── ZcaleRight.php │ │ │ ├── ResetTokenStatus.php │ │ │ ├── ResponseCode.php │ │ │ ├── UserRole.php │ │ │ └── UserStatus.php │ │ ├── Helpers │ │ │ ├── Base.php │ │ │ ├── I18n.php │ │ │ ├── Time.php │ │ │ └── Upload.php │ │ ├── Log │ │ │ └── LogWriterTrait.php │ │ ├── Mail │ │ │ └── MailSender.php │ │ ├── Models │ │ │ ├── Base.php │ │ │ ├── Label.php │ │ │ ├── Preset.php │ │ │ ├── PresetSetting.php │ │ │ ├── ResetPasswordToken.php │ │ │ ├── Role.php │ │ │ ├── RolePermission.php │ │ │ ├── Room.php │ │ │ ├── RoomLabel.php │ │ │ ├── Setting.php │ │ │ ├── User.php │ │ │ └── UserSession.php │ │ ├── Utils │ │ │ ├── BigBlueButtonRequester.php │ │ │ ├── CliUtils.php │ │ │ ├── DataUtils.php │ │ │ ├── Environment.php │ │ │ ├── PresetProcessor.php │ │ │ ├── PrivilegeUtils.php │ │ │ └── SecurityUtils.php │ │ └── Validation │ │ │ └── DataChecker.php │ └── templates │ │ ├── error │ │ ├── 404.phtml │ │ └── error.phtml │ │ └── mail │ │ └── common │ │ ├── footer.phtml │ │ ├── header.phtml │ │ └── reset_password.phtml ├── composer.json ├── composer.lock ├── data │ └── .gitkeep ├── db │ ├── .gitkeep │ ├── data │ │ └── .gitkeep │ ├── migrations │ │ ├── .gitkeep │ │ ├── 20191214105808_create_sessions_tables.php │ │ ├── 20191214105908_create_roles_table.php │ │ ├── 20191214110037_add_default_roles.php │ │ ├── 20220201092421_create_users_tables.php │ │ ├── 20220201093158_create_reset_password_token_table.php │ │ ├── 20220202151316_create_settings_tables.php │ │ ├── 20220208163949_add_default_settings_record.php │ │ ├── 20220209223026_create_preset_settings_table.php │ │ ├── 20220218081946_create_roles_permissions_table.php │ │ ├── 20220510114219_create_preset_table.php │ │ ├── 20220720114045_create_labels_table.php │ │ ├── 20221126202045_remove_name_index_in_preset.php │ │ ├── 20221201142041_create_rooms_table.php │ │ ├── 20221201143100_create_rooms_labels_table.php │ │ ├── 20221202154528_change_role_id_in_user.php │ │ ├── 20221206231224_add_expires_column_to_session.php │ │ ├── 20230102232327_add_meeting_id_in_room.php │ │ └── 20230104190815_add_avatar_in_user.php │ └── seeds │ │ └── .gitkeep ├── logs │ └── .gitkeep ├── phinx.yml ├── public │ ├── dictionary │ │ └── en-US.json │ ├── favicon.png │ └── index.php ├── rector.php ├── tests │ ├── .gitkeep │ ├── src │ │ ├── Actions │ │ │ ├── Account │ │ │ │ ├── ChangePasswordTest.php │ │ │ │ ├── GetResetPasswordTokenTest.php │ │ │ │ ├── LoginTest.php │ │ │ │ ├── RegisterTest.php │ │ │ │ ├── ResetPasswordTest.php │ │ │ │ └── SetLocaleTest.php │ │ │ ├── Core │ │ │ │ ├── GetLocaleTest.php │ │ │ │ └── InstallTest.php │ │ │ ├── Labels │ │ │ │ ├── AddTest.php │ │ │ │ ├── DeleteTest.php │ │ │ │ ├── EditTest.php │ │ │ │ └── IndexTest.php │ │ │ ├── PresetSettings │ │ │ │ ├── CollectTest.php │ │ │ │ └── EditTest.php │ │ │ ├── Presets │ │ │ │ ├── AddTest.php │ │ │ │ ├── CopyTest.php │ │ │ │ ├── DeleteTest.php │ │ │ │ ├── EditTest.php │ │ │ │ └── IndexTest.php │ │ │ ├── Recordings │ │ │ │ ├── CollectTest.php │ │ │ │ ├── DeleteTest.php │ │ │ │ ├── EditTest.php │ │ │ │ └── IndexTest.php │ │ │ ├── Roles │ │ │ │ ├── AddTest.php │ │ │ │ ├── CollectTest.php │ │ │ │ ├── DeleteTest.php │ │ │ │ ├── EditTest.php │ │ │ │ └── IndexTest.php │ │ │ ├── RolesPermissions │ │ │ │ └── CollectTest.php │ │ │ ├── Rooms │ │ │ │ ├── AddTest.php │ │ │ │ ├── CollectTest.php │ │ │ │ ├── EditTest.php │ │ │ │ ├── StartTest.php │ │ │ │ └── ViewTest.php │ │ │ ├── Settings │ │ │ │ ├── CollectTest.php │ │ │ │ └── EditTest.php │ │ │ └── Users │ │ │ │ ├── AddTest.php │ │ │ │ ├── DeleteTest.php │ │ │ │ ├── EditTest.php │ │ │ │ └── IndexTest.php │ │ ├── Config │ │ │ └── Routes.php │ │ ├── Core │ │ │ ├── ConfigurationTest.php │ │ │ ├── ReflectionTest.php │ │ │ └── Statera.php │ │ ├── Fake │ │ │ ├── LabelFaker.php │ │ │ ├── PresetFaker.php │ │ │ ├── PresetSettingFaker.php │ │ │ ├── ResetPasswordTokenFaker.php │ │ │ ├── RoleFaker.php │ │ │ ├── RoomFaker.php │ │ │ ├── RoomLabelFaker.php │ │ │ └── UserFaker.php │ │ ├── Models │ │ │ ├── LabelTest.php │ │ │ ├── PresetSettingTest.php │ │ │ ├── PresetTest.php │ │ │ ├── ResetPasswordTokenTest.php │ │ │ ├── RoleTest.php │ │ │ ├── RoomLabelTest.php │ │ │ ├── RoomTest.php │ │ │ ├── SettingTest.php │ │ │ └── UserTest.php │ │ ├── Suite │ │ │ ├── AccountActionsTest.php │ │ │ ├── CoreActionsTest.php │ │ │ ├── LabelsActionsTest.php │ │ │ ├── ModelsTest.php │ │ │ ├── PresetSettingsActionsTest.php │ │ │ ├── PresetsActionsTest.php │ │ │ ├── RecordingsActionsTest.php │ │ │ ├── RolesActionsTest.php │ │ │ ├── RolesPermissionsActionsTest.php │ │ │ ├── RoomsActionsTest.php │ │ │ ├── SettingsActionsTest.php │ │ │ └── UsersActionsTest.php │ │ └── Test │ │ │ ├── Scenario.php │ │ │ ├── TestGroup.php │ │ │ └── UnitTest.php │ ├── templates │ │ ├── account │ │ │ ├── authentication_deleted_error.json │ │ │ ├── authentication_error.json │ │ │ ├── authentication_invalid_error.json │ │ │ ├── authentication_locked_error.json │ │ │ ├── authentication_not_active_error.json │ │ │ ├── password_change_empty_error.json │ │ │ ├── password_change_error.json │ │ │ ├── password_change_invalid_error.json │ │ │ ├── password_reset_empty_error.json │ │ │ ├── password_reset_error.json │ │ │ ├── password_reset_token_error.json │ │ │ ├── password_reset_token_user_error.json │ │ │ ├── registration_error.json │ │ │ └── registration_invalid_error.json │ │ ├── core │ │ │ ├── empty_error.json │ │ │ ├── exist_error.json │ │ │ ├── invalid_error.json │ │ │ └── invalid_format_error.json │ │ ├── label │ │ │ ├── edit_success.json │ │ │ ├── empty_name_error.json │ │ │ ├── exist_error.json │ │ │ ├── invalid_color_error.json │ │ │ └── success.json │ │ ├── not_found_error.json │ │ ├── preset │ │ │ ├── default_error.json │ │ │ ├── empty_error.json │ │ │ └── exist_error.json │ │ ├── role │ │ │ ├── empty_error.json │ │ │ └── exist_error.json │ │ ├── room │ │ │ ├── empty_error.json │ │ │ └── exist_error.json │ │ ├── setting │ │ │ ├── empty_error.json │ │ │ └── invalid_format_error.json │ │ └── user │ │ │ ├── empty_error.json │ │ │ ├── exist_email_error.json │ │ │ ├── exist_error.json │ │ │ ├── exist_username_error.json │ │ │ ├── update_exist_email_error.json │ │ │ ├── update_exist_error.json │ │ │ └── update_exist_username_error.json │ └── ui │ │ ├── css │ │ └── theme.css │ │ ├── images │ │ ├── logo.png │ │ ├── powered.png │ │ └── watermark.png │ │ └── statera.htm ├── tmp │ ├── .gitkeep │ ├── cache │ │ └── .gitkeep │ └── mail │ │ └── .gitkeep └── tools │ ├── .gitkeep │ └── statera.php ├── bbbeasy-docs ├── .gitignore ├── README.md ├── babel.config.js ├── build-docs.sh ├── docusaurus.config.js ├── guides │ ├── administrator-guide │ │ ├── _category_.json │ │ ├── configuration.md │ │ ├── install.md │ │ └── software.md │ ├── api-reference │ │ ├── _category_.json │ │ └── overview.md │ ├── developer-guide │ │ ├── _category_.json │ │ ├── architecture.md │ │ ├── bbbeasy-configuration-utility.md │ │ └── development.md │ └── user-guide │ │ ├── _category_.json │ │ ├── administration.md │ │ ├── bigbluebutton_settings.md │ │ ├── branding.md │ │ ├── faqs.md │ │ ├── labels.md │ │ ├── login.md │ │ ├── presets.md │ │ ├── profile.md │ │ ├── recordings.md │ │ ├── register.md │ │ ├── reset_password.md │ │ ├── roles.md │ │ ├── rooms details.md │ │ ├── rooms.md │ │ ├── users.md │ │ └── welcome.md ├── package.json ├── run-docs.sh ├── sidebars.js ├── src │ ├── components │ │ └── HomepageFeatures │ │ │ ├── index.tsx │ │ │ └── styles.module.css │ ├── css │ │ └── bbbeasy.css │ └── pages │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── markdown-page.md ├── start-server.sh ├── static │ ├── .nojekyll │ ├── admin │ │ └── admin.png │ ├── administration │ │ └── administration.png │ ├── bbbsettings │ │ ├── audio.png │ │ ├── bigbluebutton_setting.png │ │ └── finish.png │ ├── branding │ │ ├── Branding.png │ │ ├── brand_color.png │ │ ├── edit_branding.png │ │ ├── organisation_branding_step2.png │ │ └── settings_branding.png │ ├── change_password │ │ ├── change_password.png │ │ └── reset_password.png │ ├── img │ │ ├── Breakout Rooms.png │ │ ├── General.png │ │ ├── Guest Policy.png │ │ ├── Language.png │ │ ├── Layout.png │ │ ├── Presentation.png │ │ ├── Screenshare.png │ │ ├── Security.png │ │ ├── Webcams.png │ │ ├── Whiteboard.png │ │ ├── ZcaleRight.png │ │ ├── bee_speed.png │ │ ├── bee_student.png │ │ ├── bee_worker.png │ │ ├── favicon.png │ │ ├── intro.png │ │ ├── learning_dashboard.png │ │ ├── lock_settings.png │ │ ├── logo.svg │ │ └── user_experience.png │ ├── label │ │ ├── delete_label.png │ │ ├── edit_labels.png │ │ ├── labels.png │ │ ├── new_label.png │ │ └── new_labels.png │ ├── login │ │ └── login.png │ ├── preset │ │ ├── copy_preset.png │ │ ├── delete_presete.png │ │ ├── edit_preset_settings.png │ │ ├── new_preset.png │ │ ├── page_presets.png │ │ ├── presets.png │ │ └── rename_preset.png │ ├── profile │ │ └── profile.png │ ├── recording │ │ ├── delete_recordings.png │ │ ├── edit_recordings.png │ │ ├── recording.png │ │ └── save_recordings.png │ ├── register │ │ └── register.png │ ├── role │ │ ├── edit_permissions.png │ │ ├── new_roles.png │ │ ├── role_rname.png │ │ └── roles.png │ ├── room │ │ ├── create_my_first_room.png │ │ ├── delete-room.png │ │ ├── details_room.png │ │ ├── edit_room.png │ │ ├── new_room.png │ │ ├── rooms.png │ │ └── start.png │ └── user │ │ ├── delete_user.png │ │ ├── edit_user.png │ │ ├── new_user.png │ │ └── users.png ├── tsconfig.json └── yarn.lock ├── bbbeasy-frontend ├── .env ├── .eslintrc.yaml ├── .gitignore ├── .prettierrc.json ├── README.md ├── build-installer-dev.sh ├── build-webapp-dev.sh ├── craco.config.js ├── cypress.config.js ├── cypress │ ├── e2e │ │ └── bbbeasy.spec.cy.js │ ├── fixtures │ │ ├── example.json │ │ ├── profile.json │ │ └── users.json │ ├── plugins │ │ └── index.js │ └── support │ │ ├── commands.js │ │ └── e2e.js ├── package.json ├── public │ ├── .gitignore │ ├── icons │ │ ├── fonts │ │ │ ├── bbbeasy-icons.svg │ │ │ ├── bbbeasy-icons.ttf │ │ │ ├── bbbeasy-icons.woff │ │ │ └── bbbeasy-icons.woff2 │ │ └── style.css │ ├── images │ │ ├── avatar.png │ │ ├── education.png │ │ ├── favicon.png │ │ ├── landing.png │ │ ├── logo_01.png │ │ ├── logo_02.png │ │ └── meeting.png │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── run-installer-dev.sh ├── run-webapp-dev.sh ├── src │ ├── App-installer.css │ ├── App-webapp.css │ ├── App.test.tsx │ ├── App.tsx │ ├── components │ │ ├── AddLabelForm.tsx │ │ ├── AddPresetForm.tsx │ │ ├── AddRoomForm.tsx │ │ ├── AddUserForm.tsx │ │ ├── Administration.tsx │ │ ├── Branding.tsx │ │ ├── ConfirmPassword.tsx │ │ ├── CopyTextToClipBoard.tsx │ │ ├── DynamicIcon.tsx │ │ ├── EditableTable.tsx │ │ ├── EditableTableCell.tsx │ │ ├── EditableTableColumnSearch.tsx │ │ ├── EditableTableRow.tsx │ │ ├── EmptyData.tsx │ │ ├── GuestPolicy.tsx │ │ ├── Install.tsx │ │ ├── Labels.tsx │ │ ├── LandingPage.tsx │ │ ├── Languages.tsx │ │ ├── LanguagesBBB.tsx │ │ ├── LoadingSpinner.tsx │ │ ├── NoData.tsx │ │ ├── Notifications.tsx │ │ ├── PageNotFound.tsx │ │ ├── PresetSettings.tsx │ │ ├── Presets.tsx │ │ ├── PrivateRoute.tsx │ │ ├── Profile.tsx │ │ ├── PublicRoute.tsx │ │ ├── Recordings.tsx │ │ ├── Roles.tsx │ │ ├── RoomDetails.tsx │ │ ├── RoomPresentations.tsx │ │ ├── RoomRecordings.tsx │ │ ├── Rooms.tsx │ │ ├── Step1Form.tsx │ │ ├── Step2Form.tsx │ │ ├── Step3Form.tsx │ │ ├── UserPasswordForm.tsx │ │ ├── Users.tsx │ │ ├── auth │ │ │ ├── ChangePassword.tsx │ │ │ ├── Login.tsx │ │ │ ├── Register.tsx │ │ │ └── ResetPassword.tsx │ │ └── layout │ │ │ ├── AppFooter.tsx │ │ │ ├── AppHeader.tsx │ │ │ └── AppSider.tsx │ ├── constants.ts │ ├── functions │ │ └── compare.function.ts │ ├── index.css │ ├── index.tsx │ ├── lib │ │ ├── AuthHeader.tsx │ │ ├── AxiosInstance.ts │ │ ├── Logger.tsx │ │ ├── RoomsContext.tsx │ │ └── UserContext.tsx │ ├── locale │ │ ├── ar-TN.json │ │ ├── en-US.json │ │ └── fr-FR.json │ ├── react-app-env.d.ts │ ├── reportWebVitals.ts │ ├── routing │ │ ├── IRoute.tsx │ │ ├── Router.tsx │ │ ├── backend-config.tsx │ │ ├── config-install.tsx │ │ └── config.tsx │ ├── services │ │ ├── auth.service.ts │ │ ├── install.service.ts │ │ ├── labels.service.ts │ │ ├── locale.service.ts │ │ ├── menu.service.ts │ │ ├── notification.service.ts │ │ ├── preset.settings.service.ts │ │ ├── presets.service.ts │ │ ├── recordings.service.ts │ │ ├── roles.service.ts │ │ ├── rooms.service.ts │ │ ├── settings.service.ts │ │ └── users.service.ts │ ├── setupTests.ts │ └── types │ │ ├── CategoriesIcon.ts │ │ ├── GetIconName.ts │ │ ├── GuestPolicyType.ts │ │ ├── LabelType.ts │ │ ├── LanguageType.ts │ │ ├── MenuSiderType.ts │ │ ├── MenuType.ts │ │ ├── MyPresetType.ts │ │ ├── PaginationType.ts │ │ ├── PresetType.ts │ │ ├── RecordingType.ts │ │ ├── RoleType.ts │ │ ├── RoomType.ts │ │ ├── SessionType.ts │ │ ├── SettingsType.ts │ │ ├── SubCategoryType.ts │ │ ├── TableColumnType.ts │ │ ├── ThemeType.ts │ │ ├── UserType.ts │ │ └── getRandomString.ts ├── tsconfig.json └── yarn.lock ├── docker-compose.yml ├── docker ├── bbbeasy.conf ├── config-production.ini ├── default.ini ├── phinx.yml ├── php.ini └── www-bbbeasy.conf ├── ecosystem ├── .gitignore ├── config │ ├── .env │ ├── global.js │ └── services │ │ ├── bbbeasy-installer-service.js │ │ ├── bbbeasy-webapp-service.js │ │ └── index.js ├── ecosystem.config.js ├── node_modules │ └── dotenv │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── config.d.ts │ │ ├── config.js │ │ ├── lib │ │ ├── cli-options.js │ │ ├── env-options.js │ │ ├── main.d.ts │ │ └── main.js │ │ └── package.json ├── package.json └── yarn.lock ├── install.sh ├── package ├── .gitignore ├── bbbeasy.Dockerfile ├── bbbeasy.dockerignore ├── package.sh └── templates │ └── nginx │ └── bbbeasy.conf ├── sample.env ├── tools └── bbbeasy └── vagrant ├── config ├── .gitignore └── vagrant-local.example.yml ├── dev ├── nginx │ ├── bbbeasy.conf │ ├── log │ │ └── .gitignore │ └── nginx.conf └── php-fpm │ ├── www.conf │ └── xdebug.ini └── provision ├── always-as-root.sh ├── common.sh ├── once-as-root.sh └── once-as-vagrant.sh /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: 'type: bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Possible solution** 24 | A possible solution to resolve the issue. 25 | 26 | **Screenshots** 27 | If applicable, add screenshots to help explain your problem. 28 | 29 | **Desktop (please complete the following information):** 30 | - OS: [e.g. iOS] 31 | - Browser [e.g. chrome, safari] 32 | - Version [e.g. 22] 33 | 34 | **Smartphone (please complete the following information):** 35 | - Device: [e.g. iPhone6] 36 | - OS: [e.g. iOS8.1] 37 | - Browser [e.g. stock browser, safari] 38 | - Version [e.g. 22] 39 | 40 | **Additional context** 41 | Add any other context about the problem here. 42 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Enhancement 3 | about: Improve an existing feature or functionality 4 | title: '' 5 | labels: 'type: enhancement' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **What is wrong with the current implementation? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want should happen. 15 | 16 | **Screenshots/Designs** 17 | Please attach any relevant screenshots or designs if applicable. 18 | 19 | **Additional context** 20 | Please provide any additional context or information that may be helpful. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: 'type: new feature' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "composer" 4 | directory: "/bbbeasy-backend" 5 | schedule: 6 | interval: "daily" 7 | - package-ecosystem: "npm" 8 | directory: "/bbbeasy-docs" 9 | schedule: 10 | interval: "daily" 11 | - package-ecosystem: "npm" 12 | directory: "/bbbeasy-frontend" 13 | schedule: 14 | interval: "daily" 15 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## **Description** 2 | 3 | Enter a brief description of the bug being fixed. 4 | 5 | ## **Changes Made** 6 | 7 | Describe the changes made to fix the bug 8 | 9 | ## **Closes Issue(s)** 10 | 11 | ## **Related Issue(s)** 12 | 13 | ## **Types of changes** 14 | 15 | - [ ] Bug fix (non-breaking change which fixes an issue) 16 | - [ ] New feature (non-breaking change which adds functionality) 17 | - [ ] Optimization (provides speedup with no functional changes) 18 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 19 | - [ ] Automated testing implementation or update 20 | - [ ] Dependencies updated to a newer version 21 | - [ ] Documentation update 22 | - [ ] Experimental feature that requires further discussion 23 | 24 | ## **Screenshots and screen captures** 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Vagrant template 2 | # General 3 | .vagrant/ 4 | 5 | # Log files (if you are creating logs in debug mode, uncomment this) 6 | # *.log 7 | *.log 8 | 9 | .idea 10 | 11 | settings.json 12 | 13 | output/**/*.* 14 | 15 | .env 16 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing guide 2 | 3 | Welcome to the BBBeasy community! 4 | 5 | ## BBBeasy development community 6 | 7 | The primary communication ground for the BBBeasy community is the Github 8 | discussions available at [github.com/riadvice/bbbeasy/discussions](https://github.com/riadvice/bbbeasy/discussions): 9 | 10 | - **Users** and **administrators** of BBBeasy stop by to 11 | ask questions, offer feedback, and participate in product design 12 | discussions. 13 | - **Contributors to the project**, including the **core BBBeasy 14 | development team**, discuss ongoing and future projects, brainstorm 15 | ideas, and generally help each other out. 16 | 17 | We love hearing from our users! 18 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/config/access-cli.ini: -------------------------------------------------------------------------------- 1 | ; BBBEasy open source platform - https://riadvice.tn/ 2 | ; 3 | ; Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 4 | ; 5 | ; This program is free software; you can redistribute it and/or modify it under the 6 | ; terms of the GNU Affero General Public License as published by the Free Software 7 | ; Foundation; either version 3.0 of the License, or (at your option) any later 8 | ; version. 9 | ; 10 | ; BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 11 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | ; PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU Affero General Public License along 15 | ; with BBBEasy; if not, see . 16 | 17 | [ACCESS] 18 | ;deny all routes by default 19 | policy = allow 20 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/config/client.ini: -------------------------------------------------------------------------------- 1 | ; BBBEasy open source platform - https://riadvice.tn/ 2 | ; 3 | ; Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 4 | ; 5 | ; This program is free software; you can redistribute it and/or modify it under the 6 | ; terms of the GNU Affero General Public License as published by the Free Software 7 | ; Foundation; either version 3.0 of the License, or (at your option) any later 8 | ; version. 9 | ; 10 | ; BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 11 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | ; PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU Affero General Public License along 15 | ; with BBBEasy; if not, see . 16 | 17 | [client] 18 | ; Send default front logs to server side 19 | logs_target = server 20 | room_url_prefix = /r/ -------------------------------------------------------------------------------- /bbbeasy-backend/app/config/routes-cli.ini: -------------------------------------------------------------------------------- 1 | ; BBBEasy open source platform - https://riadvice.tn/ 2 | ; 3 | ; Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 4 | ; 5 | ; This program is free software; you can redistribute it and/or modify it under the 6 | ; terms of the GNU Affero General Public License as published by the Free Software 7 | ; Foundation; either version 3.0 of the License, or (at your option) any later 8 | ; version. 9 | ; 10 | ; BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 11 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | ; PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU Affero General Public License along 15 | ; with BBBEasy; if not, see . 16 | 17 | [routes] 18 | ; routes used on the command-line 19 | GET @hvsocket : /hvs = Actions\Core\HVSocket->execute 20 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/config/routes-test.ini: -------------------------------------------------------------------------------- 1 | ; BBBEasy open source platform - https://riadvice.tn/ 2 | ; 3 | ; Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 4 | ; 5 | ; This program is free software; you can redistribute it and/or modify it under the 6 | ; terms of the GNU Affero General Public License as published by the Free Software 7 | ; Foundation; either version 3.0 of the License, or (at your option) any later 8 | ; version. 9 | ; 10 | ; BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 11 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | ; PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU Affero General Public License along 15 | ; with BBBEasy; if not, see . 16 | 17 | [routes] 18 | ; common routes for test environment 19 | GET /api = Core\Statera->index 20 | 21 | POST @install : /api//install = Actions\Core\Install->execute 22 | POST @users_collect : /api//collect-users = Actions\Users\Collect->execute 23 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/config/upload.ini: -------------------------------------------------------------------------------- 1 | ; BBBEasy open source platform - https://riadvice.tn/ 2 | ; 3 | ; Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 4 | ; 5 | ; This program is free software; you can redistribute it and/or modify it under the 6 | ; terms of the GNU Affero General Public License as published by the Free Software 7 | ; Foundation; either version 3.0 of the License, or (at your option) any later 8 | ; version. 9 | ; 10 | ; BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 11 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | ; PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU Affero General Public License along 15 | ; with BBBEasy; if not, see . 16 | 17 | [UPLOAD] 18 | ; Allowed images mime types by extensions 19 | allowed.mimes.images.jpg = image/jpeg 20 | allowed.mimes.images.png = image/png 21 | allowed.mimes.images.pdf = application/pdf 22 | 23 | ; Max file sizes configuration 24 | maxsize.image.value = 20 25 | maxsize.image.exponent = MB 26 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Account/Logout.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Account; 24 | 25 | use Actions\Base as BaseAction; 26 | 27 | /** 28 | * Class Logout. 29 | */ 30 | class Logout extends BaseAction 31 | { 32 | /** 33 | * @param mixed $f3 34 | * 35 | * @throws \JsonException 36 | */ 37 | public function execute($f3): void 38 | { 39 | $this->session->revokeUser(); 40 | $this->renderJson(['logged_out' => true]); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Core/GetFile.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Core; 24 | 25 | use Actions\Base as BaseAction; 26 | 27 | /** 28 | * Class LocalesController. 29 | */ 30 | class GetFile extends BaseAction 31 | { 32 | /** 33 | * @param \Base $f3 34 | * @param array $params 35 | */ 36 | public function execute($f3, $params) 37 | { 38 | $file = $f3->get('PARAMS.filename'); 39 | 40 | // @fixme: relative paths must be avoided for security reasons, instead use or create F3 hive properties/config 41 | return \Web::instance()->send('../uploads/' . $file); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Core/HVSocket.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Core; 24 | 25 | use Actions\Base as BaseAction; 26 | use Actions\WebSocket\Server; 27 | 28 | class HVSocket extends BaseAction 29 | { 30 | /** 31 | * Loads a json translation files from cache or generates if it does not exist. 32 | * 33 | * @param \Base $f3 34 | * @param array $params 35 | */ 36 | public function execute($f3, $params): void 37 | { 38 | $this->logger->info('WebScoket Server'); 39 | $socket = new Server(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Core/Main.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Core; 24 | 25 | use Actions\Base as BaseAction; 26 | 27 | /** 28 | * Index Action Class. 29 | */ 30 | class Main extends BaseAction 31 | { 32 | /** 33 | * @param \Base $f3 34 | * @param array $params 35 | */ 36 | public function execute($f3, $params): void 37 | { 38 | $this->renderJson(['working']); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Labels/Delete.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Labels; 24 | 25 | use Actions\Delete as DeleteAction; 26 | use Actions\RequirePrivilegeTrait; 27 | 28 | /** 29 | * Class Delete. 30 | */ 31 | class Delete extends DeleteAction 32 | { 33 | use RequirePrivilegeTrait; 34 | 35 | protected $deleteMethodName = 'delete'; 36 | } 37 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Logs/Collect.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Logs; 24 | 25 | use Actions\Base as BaseAction; 26 | use Actions\RequirePrivilegeTrait; 27 | 28 | /** 29 | * Class Collect. 30 | */ 31 | class Collect extends BaseAction 32 | { 33 | use RequirePrivilegeTrait; 34 | 35 | /** 36 | * @param \Base $f3 37 | * @param array $params 38 | */ 39 | public function execute($f3, $params): void 40 | { 41 | if ('server' === $f3->get('client.logs_target')) { 42 | $logs = $this->getDecodedBody(); 43 | $this->logger->info('React logs :', ['logs' => $logs]); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Mail/Track.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Mail; 24 | 25 | class Track 26 | { 27 | /** 28 | * @param \Mailer $mailer 29 | * @param mixed $log 30 | */ 31 | public static function logError($mailer, $log): void 32 | { 33 | $logger = new \Log('logs/smtp_' . date('Y_m_d') . '.log'); 34 | $logger->write($log); 35 | } 36 | 37 | public static function traceMail($hash): void 38 | { 39 | // your mail $hash is being read 40 | } 41 | 42 | public static function traceClick($target): void 43 | { 44 | // someone clicked $target link 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/RequirePrivilegeTrait.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions; 24 | 25 | trait RequirePrivilegeTrait {} 26 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Roles/Delete.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Roles; 24 | 25 | use Actions\Delete as DeleteAction; 26 | use Actions\RequirePrivilegeTrait; 27 | 28 | /** 29 | * Class Delete. 30 | */ 31 | class Delete extends DeleteAction 32 | { 33 | use RequirePrivilegeTrait; 34 | 35 | protected $deleteMethodName = 'delete'; 36 | } 37 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/RolesPermissions/Collect.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\RolesPermissions; 24 | 25 | use Actions\Base as BaseAction; 26 | use Utils\PrivilegeUtils; 27 | 28 | /** 29 | * Class Collect. 30 | */ 31 | class Collect extends BaseAction 32 | { 33 | /** 34 | * @param mixed $f3 35 | * @param mixed $params 36 | * 37 | * @throws \JsonException 38 | */ 39 | public function execute($f3, $params): void 40 | { 41 | $this->logger->debug('Collecting privileges for manage roles', ['roles' => json_encode($privileges = PrivilegeUtils::listSystemPrivileges())]); 42 | $this->renderJson($privileges); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Rooms/Delete.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Rooms; 24 | 25 | use Actions\Delete as DeleteAction; 26 | use Actions\RequirePrivilegeTrait; 27 | 28 | /** 29 | * Class Delete. 30 | */ 31 | class Delete extends DeleteAction 32 | { 33 | use RequirePrivilegeTrait; 34 | 35 | protected $deleteMethodName = 'delete'; 36 | } 37 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Actions/Users/Delete.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Actions\Users; 24 | 25 | use Actions\Delete as DeleteAction; 26 | use Actions\RequirePrivilegeTrait; 27 | 28 | /** 29 | * Class Delete. 30 | */ 31 | class Delete extends DeleteAction 32 | { 33 | use RequirePrivilegeTrait; 34 | 35 | protected $deleteMethodName = 'delete'; 36 | } 37 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/CacheKey.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class CacheKey extends Enum 26 | { 27 | final public const CONFIG_LOADED = 'config.loaded'; 28 | 29 | final public const ORGANISATION = 'organisation'; 30 | final public const SITE_LOGO = 'site.logo_'; 31 | 32 | /** 33 | * Returns cache key for site logo plus size. 34 | * 35 | * @param mixed $size 36 | */ 37 | public static function logoSize($size): string 38 | { 39 | return self::SITE_LOGO . $size; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/GuestPolicy.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class GuestPolicy extends Enum 26 | { 27 | public const ALWAYS_ACCEPT = 'ALWAYS_ACCEPT'; 28 | public const ALWAYS_DENY = 'ALWAYS_DENY'; 29 | public const ASK_MODERATOR = 'ASK_MODERATOR'; 30 | } 31 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Locale.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class Locale extends Enum 26 | { 27 | final public const EN_GB = 'en-GB'; 28 | final public const FR_FR = 'fr_FR'; 29 | final public const AR_AE = 'ar_AE'; 30 | } 31 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/BreakoutRooms.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class BreakoutRooms extends Enum 28 | { 29 | public const GROUP_NAME = 'BreakoutRooms'; 30 | 31 | public const CONFIGURABLE = 'configurable'; 32 | public const PRIVATE_CHAT = 'private_chat'; 33 | public const RECORDING = 'recording'; 34 | 35 | public const CONFIGURABLE_TYPE = 'bool'; 36 | public const PRIVATE_CHAT_TYPE = 'bool'; 37 | public const RECORDING_TYPE = 'bool'; 38 | } 39 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/GuestPolicy.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class GuestPolicy extends Enum 28 | { 29 | public const GROUP_NAME = 'Guest Policy'; 30 | public const CONFIGURABLE = 'configurable'; 31 | public const POLICY = 'policy'; 32 | 33 | public const CONFIGURABLE_TYPE = 'bool'; 34 | public const POLICY_TYPE = 'select'; 35 | } 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Language.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Language extends Enum 28 | { 29 | public const GROUP_NAME = 'Language'; 30 | public const DEFAULT_LANGUAGE = 'default_language'; 31 | 32 | public const DEFAULT_LANGUAGE_TYPE = 'select'; 33 | } 34 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/LearningDashboard.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class LearningDashboard extends Enum 28 | { 29 | public const GROUP_NAME = 'Learning Dashboard'; 30 | public const CONFIGURABLE = 'configurable'; 31 | public const CLEANUP_DELAY = 'cleanup_delay'; 32 | 33 | public const CONFIGURABLE_TYPE = 'bool'; 34 | public const CLEANUP_DELAY_TYPE = 'integer'; 35 | } 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Presentation.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Presentation extends Enum 28 | { 29 | public const GROUP_NAME = 'Presentation'; 30 | public const PRE_UPLOAD = 'pre_upload'; 31 | 32 | public const PRE_UPLOAD_TYPE = 'bool'; 33 | } 34 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Recording.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Recording extends Enum 28 | { 29 | public const GROUP_NAME = 'Recording'; 30 | public const RECORD = 'record'; 31 | public const ALLOW_START_STOP = 'allow_start_stop'; 32 | public const AUTO_START = 'auto_start'; 33 | 34 | public const RECORD_TYPE = 'bool'; 35 | public const AUTO_START_TYPE = 'bool'; 36 | public const ALLOW_START_STOP_TYPE = 'bool'; 37 | } 38 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Screenshare.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Screenshare extends Enum 28 | { 29 | public const GROUP_NAME = 'Screenshare'; 30 | public const CONFIGURABLE = 'availability'; 31 | 32 | public const CONFIGURABLE_TYPE = 'bool'; 33 | } 34 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Security.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Security extends Enum 28 | { 29 | public const GROUP_NAME = 'Security'; 30 | public const PASSWORD_FOR_MODERATOR = 'password_for_moderator'; 31 | public const PASSWORD_FOR_ATTENDEE = 'password_for_attendee'; 32 | 33 | public const PASS_FOR_MODERATOR_TYPE = 'bool'; 34 | public const PASS_FOR_ATTENDEE_TYPE = 'bool'; 35 | } 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/UserExperience.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class UserExperience extends Enum 28 | { 29 | public const GROUP_NAME = 'User Experience'; 30 | public const KEYBOARD_SHORTCUTS = 'keyboard_shortcuts'; 31 | public const ASK_FOR_FEEDBACK = 'ask_for_feedback'; 32 | 33 | public const KEYBOARD_SHORTCUTS_TYPE = 'bool'; 34 | public const ASK_FOR_FEEDBACK_TYPE = 'bool'; 35 | } 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/Whiteboard.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class Whiteboard extends Enum 28 | { 29 | public const GROUP_NAME = 'Whiteboard'; 30 | public const MULTI_USER_PEN_ONLY = 'multi_user_pen_only'; 31 | public const PRESENTER_TOOLS = 'presenter_tools'; 32 | public const MULTI_USER_TOOLS = 'multi_user_tools'; 33 | 34 | public const MULTI_USER_PEN_ONLY_TYPE = 'bool'; 35 | public const PRESENTER_TOOLS_TYPE = 'bool'; 36 | public const MULTI_USER_TOOLS_TYPE = 'bool'; 37 | } 38 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/Presets/ZcaleRight.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum\Presets; 24 | 25 | use MabeEnum\Enum; 26 | 27 | class ZcaleRight extends Enum 28 | { 29 | public const GROUP_NAME = 'ZcaleRight'; 30 | public const POOL_NAME = 'pool_name'; 31 | 32 | public const POOL_NAME_TYPE = 'string'; 33 | } 34 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/ResetTokenStatus.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class ResetTokenStatus extends Enum 26 | { 27 | final public const NEW = 'new'; 28 | final public const CONSUMED = 'consumed'; 29 | final public const EXPIRED = 'expired'; 30 | } 31 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/UserRole.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class UserRole extends Enum 26 | { 27 | final public const VISITOR = 'visitor'; 28 | final public const LECTURER = 'lecturer'; 29 | final public const ADMINISTRATOR = 'administrator'; 30 | final public const API = 'api'; 31 | 32 | final public const ADMINISTRATOR_ID = 1; 33 | final public const LECTURER_ID = 2; 34 | final public const NON_EXISTING_ID = 1000; 35 | } 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Enum/UserStatus.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Enum; 24 | 25 | class UserStatus extends Enum 26 | { 27 | final public const ACTIVE = 'active'; 28 | final public const INACTIVE = 'inactive'; 29 | final public const PENDING = 'pending'; 30 | final public const DELETED = 'deleted'; 31 | } 32 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/src/Models/RolePermission.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Models; 24 | 25 | use Models\Base as BaseModel; 26 | 27 | /** 28 | * Class RolePermission. 29 | * 30 | * @property int $id 31 | * @property int $role_id 32 | * @property string $group 33 | * @property string $name 34 | * @property \DateTime $created_on 35 | * @property \DateTime $updated_on 36 | */ 37 | class RolePermission extends BaseModel 38 | { 39 | protected $fieldConf = [ 40 | 'role_id' => [ 41 | 'belongs-to-one' => Role::class, 42 | ], 43 | ]; 44 | 45 | protected $table = 'roles_permissions'; 46 | } 47 | -------------------------------------------------------------------------------- /bbbeasy-backend/app/templates/error/404.phtml: -------------------------------------------------------------------------------- 1 | 404 -------------------------------------------------------------------------------- /bbbeasy-backend/app/templates/error/error.phtml: -------------------------------------------------------------------------------- 1 | Error -------------------------------------------------------------------------------- /bbbeasy-backend/app/templates/mail/common/footer.phtml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 |   21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /bbbeasy-backend/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/data/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/db/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/db/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/db/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/db/data/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/db/migrations/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/20221126202045_remove_name_index_in_preset.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | use Phinx\Migration\AbstractMigration; 24 | 25 | final class RemoveNameIndexInPreset extends AbstractMigration 26 | { 27 | public function up(): void 28 | { 29 | $table = $this->table('presets'); 30 | $table->removeIndexByName('idx_presets_name') 31 | ->save() 32 | ; 33 | } 34 | 35 | public function down(): void {} 36 | } 37 | -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/20221202154528_change_role_id_in_user.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | use Phinx\Migration\AbstractMigration; 24 | 25 | final class ChangeRoleIdInUser extends AbstractMigration 26 | { 27 | public function up(): void 28 | { 29 | $table = $this->table('users'); 30 | $table->changeColumn('role_id', 'integer', ['null' => false]) 31 | ->save() 32 | ; 33 | } 34 | 35 | public function down(): void 36 | { 37 | $this->table('users') 38 | ->changeColumn('role_id', 'integer', ['null' => true]) 39 | ->save() 40 | ; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/20221206231224_add_expires_column_to_session.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | use Phinx\Migration\AbstractMigration; 24 | 25 | final class AddExpiresColumnToSession extends AbstractMigration 26 | { 27 | public function up(): void 28 | { 29 | $table = $this->table('users_sessions'); 30 | $table->addColumn('expires', 'datetime', ['timezone' => true, 'null' => true]) 31 | ->save() 32 | ; 33 | } 34 | 35 | public function down(): void 36 | { 37 | $table = $this->table('users_sessions'); 38 | $table->removeColumn('expires')->save(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/20230102232327_add_meeting_id_in_room.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | use Phinx\Migration\AbstractMigration; 24 | 25 | final class AddMeetingIdInRoom extends AbstractMigration 26 | { 27 | public function up(): void 28 | { 29 | $table = $this->table('rooms'); 30 | $table->addColumn('meeting_id', 'string', ['limit' => 32, 'null' => false]) 31 | ->addIndex('meeting_id', ['unique' => true, 'name' => 'idx_rooms_meeting_id']) 32 | ->save() 33 | ; 34 | } 35 | 36 | public function down(): void 37 | { 38 | $table = $this->table('rooms'); 39 | $table->removeColumn('meeting_id')->save(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/db/migrations/20230104190815_add_avatar_in_user.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | use Phinx\Migration\AbstractMigration; 24 | 25 | final class AddAvatarInUser extends AbstractMigration 26 | { 27 | public function up(): void 28 | { 29 | $table = $this->table('users'); 30 | $table->addColumn('avatar', 'string', ['limit' => 256, 'null' => true]) 31 | ->save() 32 | ; 33 | } 34 | 35 | public function down(): void 36 | { 37 | $table = $this->table('users'); 38 | $table->removeColumn('avatar')->save(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bbbeasy-backend/db/seeds/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/db/seeds/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/logs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/logs/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/phinx.yml: -------------------------------------------------------------------------------- 1 | paths: 2 | migrations: '%%PHINX_CONFIG_DIR%%/db/migrations' 3 | seeds: '%%PHINX_CONFIG_DIR%%/db/seeds' 4 | 5 | environments: 6 | default_migration_table: phinxlog 7 | default_database: development 8 | production: 9 | adapter: pgsql 10 | host: localhost 11 | name: bbbeasy 12 | user: bbbeasy 13 | pass: 'bbbeasy' 14 | port: 5432 15 | charset: utf8 16 | 17 | development: 18 | adapter: pgsql 19 | host: localhost 20 | name: bbbeasy 21 | user: bbbeasy 22 | pass: 'bbbeasy' 23 | port: 5432 24 | charset: utf8 25 | 26 | testing: 27 | adapter: pgsql 28 | host: localhost 29 | name: bbbeasy_test 30 | user: bbbeasy_test 31 | pass: 'bbbeasy_test' 32 | port: 5432 33 | charset: utf8 34 | 35 | version_order: creation 36 | -------------------------------------------------------------------------------- /bbbeasy-backend/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/public/favicon.png -------------------------------------------------------------------------------- /bbbeasy-backend/public/index.php: -------------------------------------------------------------------------------- 1 | . 19 | */ 20 | 21 | use Application\Bootstrap; 22 | 23 | if (PHP_SAPI === 'cli') { 24 | parse_str(str_replace('/?', '', $argv[1]), $_GET); 25 | } 26 | 27 | if (!empty($_GET) && array_key_exists('statera', $_GET)) { 28 | require_once __DIR__ . '/statera/index.php'; 29 | exit; 30 | } 31 | 32 | // Change to application directory to execute the code 33 | chdir(realpath(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'app')); 34 | 35 | // require bootstrap to init the application 36 | require_once 'src/Application/Bootstrap.php'; 37 | 38 | $app = new Bootstrap(); 39 | $app->start(); 40 | -------------------------------------------------------------------------------- /bbbeasy-backend/rector.php: -------------------------------------------------------------------------------- 1 | parameters(); 14 | $parameters->set(Option::PATHS, [ 15 | __DIR__ . '/app/src', 16 | __DIR__ . '/tests/src' 17 | ]); 18 | 19 | $parameters->set(Option::AUTOLOAD_PATHS, [ 20 | __DIR__ . '/vendor' 21 | ]); 22 | 23 | // Define what rule sets will be applied 24 | $containerConfigurator->import(LevelSetList::UP_TO_PHP_81); 25 | $containerConfigurator->import(SetList::CODE_QUALITY); 26 | 27 | // get services (needed for register a single rule) 28 | $services = $containerConfigurator->services(); 29 | 30 | // register a single rule 31 | $services->set(TypedPropertyRector::class); 32 | }; 33 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tests/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Config/Routes.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Config; 24 | 25 | class Routes {} 26 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/CoreActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Core\GetLocaleTest; 26 | use Actions\Core\InstallTest; 27 | use Test\TestGroup; 28 | 29 | /** 30 | * @internal 31 | * 32 | * @coversNothing 33 | */ 34 | final class CoreActionsTest extends TestGroup 35 | { 36 | protected $classes = [GetLocaleTest::class, InstallTest::class]; 37 | 38 | protected $quiet = true; 39 | } 40 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/LabelsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Labels\AddTest; 26 | use Actions\Labels\DeleteTest; 27 | use Actions\Labels\EditTest; 28 | use Actions\Labels\IndexTest; 29 | use Test\TestGroup; 30 | 31 | /** 32 | * @internal 33 | * 34 | * @coversNothing 35 | */ 36 | final class LabelsActionsTest extends TestGroup 37 | { 38 | protected $classes = [AddTest::class, EditTest::class, DeleteTest::class, IndexTest::class]; 39 | 40 | protected $quiet = true; 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/PresetSettingsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\PresetSettings\CollectTest; 26 | use Actions\PresetSettings\EditTest; 27 | use Test\TestGroup; 28 | 29 | /** 30 | * @internal 31 | * 32 | * @coversNothing 33 | */ 34 | final class PresetSettingsActionsTest extends TestGroup 35 | { 36 | protected $classes = [CollectTest::class, EditTest::class]; 37 | 38 | protected $quiet = true; 39 | } 40 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/PresetsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Presets\AddTest; 26 | use Actions\Presets\CopyTest; 27 | use Actions\Presets\DeleteTest; 28 | use Actions\Presets\EditTest; 29 | use Actions\Presets\IndexTest; 30 | use Test\TestGroup; 31 | 32 | /** 33 | * @internal 34 | * 35 | * @coversNothing 36 | */ 37 | final class PresetsActionsTest extends TestGroup 38 | { 39 | protected $classes = [AddTest::class, EditTest::class, DeleteTest::class, CopyTest::class, IndexTest::class]; 40 | 41 | protected $quiet = true; 42 | } 43 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/RecordingsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Recordings\CollectTest; 26 | use Actions\Recordings\DeleteTest; 27 | use Actions\Recordings\EditTest; 28 | use Actions\Recordings\IndexTest; 29 | use Test\TestGroup; 30 | 31 | /** 32 | * @internal 33 | * 34 | * @coversNothing 35 | */ 36 | final class RecordingsActionsTest extends TestGroup 37 | { 38 | protected $classes = [CollectTest::class, IndexTest::class, EditTest::class, DeleteTest::class]; 39 | 40 | protected $quiet = true; 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/RolesActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Roles\AddTest; 26 | use Actions\Roles\CollectTest; 27 | use Actions\Roles\DeleteTest; 28 | use Actions\Roles\EditTest; 29 | use Actions\Roles\IndexTest; 30 | use Test\TestGroup; 31 | 32 | /** 33 | * @internal 34 | * 35 | * @coversNothing 36 | */ 37 | final class RolesActionsTest extends TestGroup 38 | { 39 | protected $classes = [AddTest::class, EditTest::class, DeleteTest::class, CollectTest::class, IndexTest::class]; 40 | 41 | protected $quiet = true; 42 | } 43 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/RolesPermissionsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\RolesPermissions\CollectTest; 26 | use Test\TestGroup; 27 | 28 | /** 29 | * @internal 30 | * 31 | * @coversNothing 32 | */ 33 | final class RolesPermissionsActionsTest extends TestGroup 34 | { 35 | protected $classes = [CollectTest::class]; 36 | 37 | protected $quiet = true; 38 | } 39 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/RoomsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Rooms\AddTest; 26 | use Actions\Rooms\CollectTest; 27 | use Actions\Rooms\EditTest; 28 | use Actions\Rooms\StartTest; 29 | use Actions\Rooms\ViewTest; 30 | use Test\TestGroup; 31 | 32 | /** 33 | * @internal 34 | * 35 | * @coversNothing 36 | */ 37 | final class RoomsActionsTest extends TestGroup 38 | { 39 | protected $classes = [AddTest::class, EditTest::class, CollectTest::class, ViewTest::class, StartTest::class]; 40 | 41 | protected $quiet = true; 42 | } 43 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/SettingsActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Settings\CollectTest; 26 | use Actions\Settings\EditTest; 27 | use Test\TestGroup; 28 | 29 | /** 30 | * @internal 31 | * 32 | * @coversNothing 33 | */ 34 | final class SettingsActionsTest extends TestGroup 35 | { 36 | protected $classes = [CollectTest::class, EditTest::class]; 37 | 38 | protected $quiet = true; 39 | } 40 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/src/Suite/UsersActionsTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | 23 | namespace Suite; 24 | 25 | use Actions\Users\AddTest; 26 | use Actions\Users\DeleteTest; 27 | use Actions\Users\EditTest; 28 | use Actions\Users\IndexTest; 29 | use Test\TestGroup; 30 | 31 | /** 32 | * @internal 33 | * 34 | * @coversNothing 35 | */ 36 | final class UsersActionsTest extends TestGroup 37 | { 38 | protected $classes = [AddTest::class, EditTest::class, DeleteTest::class, IndexTest::class]; 39 | 40 | protected $quiet = true; 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/authentication_deleted_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Your account has been disabled for violating our terms", 3 | "status": 400 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/authentication_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "email": "- All of the required rules must pass for email", 4 | "password": "- All of the required rules must pass for password" 5 | }, 6 | "status" : 422 7 | } 8 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/authentication_invalid_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "User does not exist with this email", 3 | "status": 400 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/authentication_locked_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Your account has been locked because you have reached the maximum number of invalid sign-in attempts. You can contact the administrator or click here to receive an email containing instructions on how to unlock your account", 3 | "status": 400 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/authentication_not_active_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Your account is not active. Please contact your administrator", 3 | "status": 400 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_change_empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "username": "- All of the required rules must pass for username", 4 | "email": "- All of the required rules must pass for email", 5 | "password": "- All of the required rules must pass for password", 6 | "token": "- All of the required rules must pass for token" 7 | }, 8 | "status" : 422 9 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_change_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Password could not be changed", 3 | "status": 404 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_change_invalid_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Avoid choosing a common password", 3 | "status" : 400 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_reset_empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "email": "- All of the required rules must pass for email" 4 | }, 5 | "status" : 422 6 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_reset_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "User does not exist with this email", 3 | "status": 404 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_reset_token_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Invalid password reset token" 3 | } 4 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/password_reset_token_user_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "User is not active", 3 | "status": 400 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/registration_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "username": "- All of the required rules must pass for username", 4 | "email": "- All of the required rules must pass for email", 5 | "password": "- All of the required rules must pass for password", 6 | "confirmPassword": "- All of the required rules must pass for confirmPassword", 7 | "agreement": "- All of the required rules must pass for agreement" 8 | }, 9 | "status" : 422 10 | } 11 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/account/registration_invalid_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Avoid choosing a common password", 3 | "status" : 412 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/core/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "username": "- All of the required rules must pass for username", 4 | "email": "- All of the required rules must pass for email", 5 | "password": "- All of the required rules must pass for password", 6 | 7 | "company_name":"- All of the required rules must pass for company name", 8 | "company_url":"- All of the required rules must pass for company url", 9 | "platform_name":"- All of the required rules must pass for platform name", 10 | "term_url":"- All of the required rules must pass for term url", 11 | "policy_url":"- All of the required rules must pass for policy url", 12 | "branding_colors":"- All of the required rules must pass for branding colors", 13 | "presetsConfig":"- All of the required rules must pass for presetsConfig" 14 | }, 15 | "status" : 422 16 | } 17 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/core/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message":"Username and Email already exist", 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/core/invalid_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Avoid choosing a common password", 3 | "status" : 412 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/core/invalid_format_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "invalid file format", 3 | "status" : 412 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/label/edit_success.json: -------------------------------------------------------------------------------- 1 | { 2 | "result": "success", 3 | "label": { 4 | "key": 21, 5 | "name": "testtest", 6 | "description": "testDescription", 7 | "color": "#ffffff" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/label/empty_name_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "name": "- All of the required rules must pass for name" 4 | }, 5 | "status": 422 6 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/label/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "name": "Label name already exists", 4 | "color": "Label color already exists" 5 | }, 6 | "status": 412 7 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/label/invalid_color_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "color": "- All of the required rules must pass for color" 4 | }, 5 | "status": 422 6 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/label/success.json: -------------------------------------------------------------------------------- 1 | { 2 | "result": "success", 3 | "label": { 4 | "key": 20, 5 | "name": "label", 6 | "description": "description", 7 | "color": "{{ @data.color }}" 8 | }, 9 | "status": 201 10 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/not_found_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "status":404 3 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/preset/default_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "default preset could not be deleted", 3 | "status" : 500 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/preset/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "name": "- All of the required rules must pass for name", 4 | "user_id": "- All of the required rules must pass for user id" 5 | }, 6 | "status" : 422 7 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/preset/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"name":"Name already exists"}, 3 | "status" : 412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/role/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"name":"- All of the required rules must pass for name"}, 3 | "status" : 422 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/role/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"name":"Name already exist"}, 3 | "status" : 412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/room/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "name": "- All of the required rules must pass for name", 4 | "short_link": "- All of the required rules must pass for short_link", 5 | "labels": "- All of the required rules must pass for labels", 6 | "user_id": "- All of the required rules must pass for user id" 7 | }, 8 | "status" : 422 9 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/room/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "name":"Room name already exists", 4 | "shortlink": "Room link already exists" 5 | }, 6 | "status" : 412 7 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/setting/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "company_name":"- All of the required rules must pass for company name", 4 | "company_url":"- All of the required rules must pass for company url", 5 | "platform_name":"- All of the required rules must pass for platform name", 6 | "term_url":"- All of the required rules must pass for term url", 7 | "policy_url":"- All of the required rules must pass for policy url", 8 | "branding_colors":"- All of the required rules must pass for branding colors" 9 | }, 10 | "status" : 422 11 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/setting/invalid_format_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "invalid file format", 3 | "status" : 412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/empty_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": { 3 | "username": "- All of the required rules must pass for username", 4 | "email": "- All of the required rules must pass for email", 5 | "password": "- All of the required rules must pass for password", 6 | "role": "- All of the required rules must pass for role" 7 | }, 8 | "status" : 422 9 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/exist_email_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message":"Email already exists", 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message":"Username and Email already exist", 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/exist_username_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "message":"Username already exists", 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/update_exist_email_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"email": "email already exist"}, 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/update_exist_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"username": "username already exist","email": "email already exist"}, 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/templates/user/update_exist_username_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": {"username": "username already exist"}, 3 | "status":412 4 | } -------------------------------------------------------------------------------- /bbbeasy-backend/tests/ui/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tests/ui/images/logo.png -------------------------------------------------------------------------------- /bbbeasy-backend/tests/ui/images/powered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tests/ui/images/powered.png -------------------------------------------------------------------------------- /bbbeasy-backend/tests/ui/images/watermark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tests/ui/images/watermark.png -------------------------------------------------------------------------------- /bbbeasy-backend/tmp/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tmp/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/tmp/cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tmp/cache/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/tmp/mail/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tmp/mail/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/tools/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-backend/tools/.gitkeep -------------------------------------------------------------------------------- /bbbeasy-backend/tools/statera.php: -------------------------------------------------------------------------------- 1 | . 19 | */ 20 | 21 | use Application\Bootstrap; 22 | use Core\Statera; 23 | 24 | // load composer autoload 25 | require_once '../vendor/autoload.php'; 26 | 27 | // Change to application directory to execute the code 28 | chdir(realpath(dirname(__DIR__,2) . DIRECTORY_SEPARATOR . 'app')); 29 | 30 | $GLOBALS['test_cli'] = PHP_SAPI === 'cli'; 31 | 32 | Statera::startCoverage('Application Bootstrapping'); 33 | $app = new Bootstrap(); 34 | Statera::stopCoverage(); 35 | $app->start(); 36 | -------------------------------------------------------------------------------- /bbbeasy-docs/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | .pnp.* 23 | .yarn/* 24 | -------------------------------------------------------------------------------- /bbbeasy-docs/README.md: -------------------------------------------------------------------------------- 1 | # Website 2 | 3 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. 4 | 5 | ### Installation 6 | 7 | ``` 8 | $ yarn 9 | ``` 10 | This command installs all dependencies for a project 11 | 12 | ### Local Development 13 | 14 | ``` 15 | $ yarn start 16 | ``` 17 | 18 | This command starts a local development server and opens up a browser window [http://localhost:3000](http://localhost:3000). Most changes are reflected live without having to restart the server. 19 | 20 | ``` 21 | $ ./run-docs.sh 22 | ``` 23 | This command runs the website in development mode on the virtual machine.\ 24 | Opens [http://docs.bbbeasy.test:3000](http://docs.bbbeasy.test:3000) in the browser window to view the application on your local machine. 25 | 26 | ### Build 27 | 28 | ``` 29 | $ yarn build 30 | ``` 31 | or 32 | ``` 33 | $ ./build-docs.sh 34 | ``` 35 | 36 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 37 | 38 | ### Deployment 39 | 40 | Using SSH: 41 | 42 | ``` 43 | $ USE_SSH=true yarn deploy 44 | ``` 45 | 46 | Not using SSH: 47 | 48 | ``` 49 | $ GIT_USER= yarn deploy 50 | ``` 51 | 52 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. 53 | -------------------------------------------------------------------------------- /bbbeasy-docs/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /bbbeasy-docs/build-docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | yarn install 4 | yarn build 5 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/administrator-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Administrator Guide", 3 | "position": 3 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/administrator-guide/configuration.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: 'Configuration' 4 | sidebar_label: 'Configuration files' 5 | --- 6 | 7 | # Configuration 8 | 9 | ## Backend 10 | 11 | ## Installer 12 | 13 | ## Frontend 14 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/administrator-guide/software.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: 'Software' 4 | sidebar_label: 'Software' 5 | --- 6 | 7 | ## Client requirements 8 | 9 | ### Supported Browsers 10 | ----------------------- 11 | 12 | | Browser | Version | 13 | |-------------|---------| 14 | | Firefox | 78+ | 15 | | Chreom/Edge | 83+ | 16 | | Opera | 69+ | 17 | | Safari | 11 | 18 | 19 | ## Server requirements 20 | 21 | ### Hardware requirements 22 | 23 | To install BBBEasy in production we recommend: 24 | 25 | - 4 GB of RAM. 26 | - 2 CPU cores. 27 | - 40 GB of free disk space. 28 | 29 | ### Operating system 30 | 31 | For package A debian based distribution is recommended. 32 | The installation has been tested on Ubuntu 20.04 and 22.04. 33 | 34 | For the `docker` based installation you just need a working docker into your operating system. 35 | 36 | ### Network requirements 37 | 38 | The following network configuration must be met before installing BBBEasy: 39 | 40 | - Open `443` port. We discourage using port `80`. 41 | - Hostname (such as meetings.thecompany.kom) with DNS A record configured. 42 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/api-reference/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "API", 3 | "position": 1 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/developer-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Developer Guide", 3 | "position": 3 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/developer-guide/architecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | # Platfrom architecture 6 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/developer-guide/bbbeasy-configuration-utility.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | --- 4 | 5 | # Getting Started with bbbeasy Configuration Utility for BBBEasy 6 | 7 | ## Available Scripts 8 | 9 | In the project directory, you can run: 10 | 11 | ### ` bbbeasy [options]` 12 | 13 | - Configuration : 14 | 15 | `` --version `` Display BBBEasy version 16 | 17 | `` --selfinstall `` Make bbbeasy runnable from anywhere 18 | 19 | `` --enableinstaller `` Enable BBBEasy installer app 20 | 21 | `` --enableweb `` Enable BBBEasy Web app 22 | 23 | 24 | - Development : 25 | 26 | `` --enabletests `` Enable running unit tests 27 | 28 | `` --test <-c> `` Run unit tests with a test name. Use for -c coverage 29 | 30 | `` --fix `` Fix php code style 31 | 32 | `` --migrate `` Run database migrations 33 | 34 | `` --metrics `` Generates code metrics 35 | 36 | 37 | - Monitoring : 38 | 39 | `` --check `` Check configuration files and processes for problems 40 | 41 | 42 | - Administration : 43 | 44 | `` --restart `` Restart BBBEasy`` --stop `` Stop BBBEasy 45 | 46 | `` --start `` Start BBBEasy 47 | 48 | `` --clean `` Restart and clean all log files 49 | 50 | `` --cleansessions `` Cleans sessions from the database 51 | 52 | `` --status `` Display running status of components 53 | 54 | `` --zip `` Zip up log files for reporting an error 55 | 56 | 57 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Introduction", 3 | "position": 1 4 | } 5 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/administration.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 14 3 | --- 4 | 5 | # Administration 6 | The administration settings section is related to the registration method of users .The settings are set by default to inactive during the install , then we can modify them depending on the client requirements 7 | 8 | ## Edit the administration settings 9 | 10 | `To Edit the administration settings, follow the following steps` 11 | 12 | 1. Go to the Administration page. 13 | 2. Enable or disable the settings then save the changes . 14 | 3. The administration settings will be saved. 15 | 16 | ![Users](/administration/administration.png) 17 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/bigbluebutton_settings.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | --- 4 | 5 | # BigBlueButton Settings 6 | 7 | ## Edit BigBlueButton settings 8 | 9 | After already have the application installed , you can customize the BigBlueButton settings through the BigBlueButton view 10 | 11 | `To Edit BigBlueButton settings` 12 | 13 | 1. Go to the BigBlueButton page under the settings menu 14 | 2. Select one group from the preset setting groups 15 | 3. Enable/disable the BigBlueButton settings needed for use then confirm the changes 16 | 4. The BigBlueButton settings group will be updated with success 17 | 18 | 19 | ![Audio](/bbbsettings/audio.png) 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/branding.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | --- 4 | 5 | # Branding 6 | 7 | ## Organization and branding 8 | 9 | You can customize the organization and branding information after the install , during using the application 10 | 11 | 12 | ## Update the Organization & Branding settings 13 | 14 | `To Edit the Organisation and branding settings , follow these steps ` 15 | 16 | 1. Go to the Organization and branding page. 17 | 2. Edit the organization or branding settings then submit the changes. 18 | 3. The organization and branding settings will be saved. 19 | 20 | 21 | ![Organisation & Branding](/branding/edit_branding.png) 22 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/labels.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 7 3 | --- 4 | 5 | # Labels Management 6 | 7 | Labels are used to distinguish the rooms and facilitate rooms identification by using different labels 8 | 9 | ## New Label 10 | 11 | `To create a new label , follow the following steps` 12 | 13 | 1. Go on labels page 14 | 2. Click on the New label button 15 | 3. Fill the Create Label form and submit the form 16 | 17 | ![labels](/label/new_labels.png) 18 | ![labels](/label/labels.png) 19 | 20 | ## Edit Label 21 | 22 | `To Edit labels , follow the following steps ` 23 | 24 | 1. Go to the labels page 25 | 2. Choose a label from the list and click on the edit button 26 | 3. Edit the label details then click on save button 27 | 4. The changes will be saved successfully 28 | 29 | ![labels](/label/edit_labels.png) 30 | 31 | ## Delete labels 32 | 33 | `To delete labels , follow the following steps` 34 | 35 | 1. Go to the labels page 36 | 2. Choose a label from the list and click on the delete button 37 | 3. Confirm deletion 38 | 4. The label will be deleted . 39 | 40 | ![labels](/label/delete_label.png) -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/login.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | --- 4 | 5 | # Authentication 6 | 7 | 8 | `To access to your account ,follow these steps` 9 | 10 | 1. Open your browser and open the application 11 | 2. Click the login button 12 | 3. Enter your Email address and password , the click the login button 13 | 14 | ![login](/login/login.png) -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/profile.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 13 3 | --- 4 | 5 | # User Profile 6 | 7 | The profile page includes all your account details(Username,Email,Profile picture). 8 | Also you can edit your profile informations 9 | 10 | ## Edit Profile 11 | 12 | 13 | `To Edit your profile informations , follow these steps` 14 | 15 | 1. Go to the avatar profile in the right corner, a menu will be appeared , then click on profile 16 | 2. Edit your profile information , then enter your current password for confirmation and submit the form 17 | 3. your profile will be modified successfully 18 | 19 | ![profile](/profile/profile.png) -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/recordings.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 10 3 | --- 4 | 5 | # Access to Recordings 6 | 7 | 8 | The recording section represents all the meeting recordings and all the sharing options. 9 | 10 | ## Recordings page 11 | 12 | ` To Go the recordings page , follow the following steps` 13 | 14 | 1. Go to the Recordings page. 15 | 2. You will find all the recording meetings 16 | 17 | ![Recordings](/recording/save_recordings.png) 18 | 19 | ## Edit Recording 20 | 21 | `To Edit Recording Name , follow the following steps` 22 | 23 | 1. Go to the Recordings page 24 | 2. Choose a Recording from the list and click on the edit button 25 | 3. Edit the Recording Name then click on the save button 26 | 4. The changes will be saved successfully 27 | 28 | ![Recordings](/recording/edit_recordings.png) 29 | 30 | ## Delete Recording 31 | 32 | `To delete Recording , follow the following steps` 33 | 34 | 1. Go to the Recordings page 35 | 2. Choose a Recording from the list and click on the delete button 36 | 3. Confirm deletion 37 | 4. The Recording will be deleted . 38 | 39 | ![Recordings](/recording/delete_recordings.png) -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/register.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | # Registration 6 | The register page allows you to create an account in order to use the application and discover its features. 7 | 8 | ## Register page 9 | 10 | ` To Register a new account , follow these steps` 11 | 12 | 1. Go to register page 13 | 2. Fill the account details then submit the form 14 | 3. A new user will be registered successfully with a pending state and a default preset will be created for each new registered user 15 | 4. The administrator should activate the new created account in order to use it . 16 | ![Register](/register/register.png) -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/reset_password.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | --- 4 | 5 | # Reset password 6 | 7 | This feature allows you to change your password if you forget it before login 8 | 9 | ## Reset password 10 | 11 | 12 | `To reset your password , follow these steps` 13 | 14 | 1. Go to the login page 15 | 2. Click on `reset here ` link 16 | 3. Enter your email address then click on `Reset password ` button 17 | 4. An email will be sent to you that includes a change password link 18 | 5. Click through the link , that will redirect you to change password form 19 | 6. Enter your new password and submit the form 20 | 7. The password will be changed successfully 21 | 22 | ![Reset password](/change_password/reset_password.png) 23 | 24 | ![changepassword](/change_password/change_password.png) 25 | 26 | 27 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/roles.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 11 3 | --- 4 | 5 | # Roles configuration 6 | 7 | Through the Roles page, Administrators are able to add,edit,delete the roles of the application. 8 | We have basically two roles Administrator and Lecturer but we can add another ones . 9 | 10 | ![Roles](/role/roles.png) 11 | 12 | ## Creating a New Role 13 | 14 | `To create a new role click on the new role button. This will open the modal where you can specify the role details` 15 | 16 | 1. Go to the Roles page 17 | 2. Click on the New Role button 18 | 3. Fill the form and check the role permissions needed then submit the form 19 | 4. A new role will be created with its permissions 20 | 21 | ![Roles](/role/new_roles.png) 22 | 23 | ## Rename the Role name 24 | 25 | `To Edit the role ,follow the following steps` 26 | 27 | 1. Go to the Roles page 28 | 2. Choose a role from the list then click on the rename button 29 | 3. Enter the new role name then save the changes 30 | 4. The role name will be changed successfully 31 | 32 | ![Rename role](/role/role_rname.png) 33 | 34 | ## Edit the role permissions 35 | 36 | `To Edit the role permissions , follow the following steps` 37 | 38 | 1. Go to the Roles page 39 | 2. Choose a role from the list then click on permissions 40 | 3. Edit the role permissions then click on save button 41 | 4. The role permissions will be changed 42 | 43 | ![Rename role](/role/edit_permissions.png) 44 | -------------------------------------------------------------------------------- /bbbeasy-docs/guides/user-guide/rooms details.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 9 3 | --- 4 | # Room details 5 | 6 | Room details contains the entire room details (room informations , room presentations , room recordings) 7 | 8 | 9 | ## Room details page 10 | 11 | `In order to access to the room details page , follow these steps ` 12 | 13 | 1. Go to the Rooms page 14 | 2. Choose a room and click on it to access to the room details page 15 | 16 | ## Room Recordings section 17 | 18 | The room recordings contains all the recordings related to the specified room 19 | This section after the end of the meeting 20 | 21 | ## Room presentations section 22 | 23 | In the room presentations section , you can upload the desired documents for the room before starting it . 24 | This section is available in case of the preupload setting is active on its related preset 25 | 26 | ![Room details](/room/details_room.png) 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /bbbeasy-docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bbbeasy-docs", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "clear": "docusaurus clear", 12 | "serve": "docusaurus serve", 13 | "write-translations": "docusaurus write-translations", 14 | "write-heading-ids": "docusaurus write-heading-ids", 15 | "typecheck": "tsc" 16 | }, 17 | "dependencies": { 18 | "@cmfcmf/docusaurus-search-local": "^0.11.0", 19 | "@docusaurus/core": "2.4.3", 20 | "@docusaurus/plugin-client-redirects": "2.4.3", 21 | "@docusaurus/preset-classic": "2.4.3", 22 | "@mdx-js/react": "^1.6.22", 23 | "clsx": "^1.2.1", 24 | "prism-react-renderer": "^1.3.5", 25 | "react": "^17.0.2", 26 | "react-dom": "^17.0.2" 27 | }, 28 | "resolutions": { 29 | "got": "^12.5.3", 30 | "trim": "^1.0.1" 31 | }, 32 | "devDependencies": { 33 | "@docusaurus/module-type-aliases": "^2.4.3", 34 | "@tsconfig/docusaurus": "^2.0.2", 35 | "typescript": "^4.9.5" 36 | }, 37 | "browserslist": { 38 | "production": [ 39 | ">0.5%", 40 | "not dead", 41 | "not op_mini all" 42 | ], 43 | "development": [ 44 | "last 1 chrome version", 45 | "last 1 firefox version", 46 | "last 1 safari version" 47 | ] 48 | }, 49 | "engines": { 50 | "node": ">=18.16" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /bbbeasy-docs/run-docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pm2 delete all 4 | pm2 reset all 5 | pm2 start ./start-server.sh --name docs-app 6 | 7 | -------------------------------------------------------------------------------- /bbbeasy-docs/sidebars.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creating a sidebar enables you to: 3 | - create an ordered group of docs 4 | - render a sidebar for each doc of that group 5 | - provide next/previous navigation 6 | 7 | The sidebars can be generated from the filesystem, or explicitly defined here. 8 | 9 | Create as many sidebars as you want. 10 | */ 11 | 12 | // @ts-check 13 | 14 | /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ 15 | const sidebars = { 16 | // By default, Docusaurus generates a sidebar from the docs folder structure 17 | user: [ 18 | { 19 | type: 'autogenerated', 20 | dirName: 'user-guide', 21 | }, 22 | ], 23 | developer: [ 24 | { 25 | type: 'autogenerated', 26 | dirName: 'developer-guide', 27 | }, 28 | ], 29 | administrator: [ 30 | { 31 | type: 'autogenerated', 32 | dirName: 'administrator-guide', 33 | }, 34 | ], 35 | api: [ 36 | { 37 | type: 'autogenerated', 38 | dirName: 'api-reference', 39 | }, 40 | ], 41 | }; 42 | 43 | module.exports = sidebars; 44 | -------------------------------------------------------------------------------- /bbbeasy-docs/src/components/HomepageFeatures/styles.module.css: -------------------------------------------------------------------------------- 1 | .features { 2 | display: flex; 3 | align-items: center; 4 | padding: 2rem 0; 5 | width: 100%; 6 | } 7 | 8 | .featureImg { 9 | height: 200px; 10 | } 11 | -------------------------------------------------------------------------------- /bbbeasy-docs/src/css/bbbeasy.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Any CSS included here will be global. The classic template 3 | * bundles Infima by default. Infima is a CSS framework designed to 4 | * work well for content-centric websites. 5 | */ 6 | 7 | /* You can override the default Infima variables here. */ 8 | :root { 9 | --ifm-color-primary: #ffb100; 10 | --ifm-color-primary-dark: #E09D00; 11 | --ifm-color-primary-darker: #B88100; 12 | --ifm-color-primary-darkest: #8F6400; 13 | --ifm-color-primary-light: #FFC233; 14 | --ifm-color-primary-lighter: #FFCE5C; 15 | --ifm-color-primary-lightest: #FFDA85; 16 | --ifm-code-font-size: 95%; 17 | } 18 | 19 | /* For readability concerns, you should choose a lighter palette in dark mode. */ 20 | [data-theme='dark'] { 21 | --ifm-color-primary: #ffb100; 22 | --ifm-color-primary-dark: #E09D00; 23 | --ifm-color-primary-darker: #B88100; 24 | --ifm-color-primary-darkest: #8F6400; 25 | --ifm-color-primary-light: #FFC233; 26 | --ifm-color-primary-lighter: #FFCE5C; 27 | --ifm-color-primary-lightest: #FFDA85; 28 | } 29 | 30 | .docusaurus-highlight-code-line { 31 | background-color: rgba(0, 0, 0, 0.1); 32 | display: block; 33 | margin: 0 calc(-1 * var(--ifm-pre-padding)); 34 | padding: 0 var(--ifm-pre-padding); 35 | } 36 | 37 | [data-theme='dark'] .docusaurus-highlight-code-line { 38 | background-color: rgba(0, 0, 0, 0.3); 39 | } -------------------------------------------------------------------------------- /bbbeasy-docs/src/pages/index.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * CSS files with the .module.css suffix will be treated as CSS modules 3 | * and scoped locally. 4 | */ 5 | 6 | .heroBanner { 7 | padding: 4rem 0; 8 | text-align: center; 9 | position: relative; 10 | overflow: hidden; 11 | } 12 | 13 | @media screen and (max-width: 996px) { 14 | .heroBanner { 15 | padding: 2rem; 16 | } 17 | } 18 | 19 | .buttons { 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | } 24 | -------------------------------------------------------------------------------- /bbbeasy-docs/src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import clsx from 'clsx'; 3 | import Link from '@docusaurus/Link'; 4 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; 5 | import Layout from '@theme/Layout'; 6 | import HomepageFeatures from '@site/src/components/HomepageFeatures'; 7 | 8 | import styles from './index.module.css'; 9 | 10 | function HomepageHeader() { 11 | const {siteConfig} = useDocusaurusContext(); 12 | return ( 13 |
14 |
15 |

{siteConfig.title}

16 |

{siteConfig.tagline}

17 |
18 | 21 | Discover BBBEasy - 2min read ⏱️ 22 | 23 |
24 |
25 |
26 | ); 27 | } 28 | 29 | export default function Home(): JSX.Element { 30 | const {siteConfig} = useDocusaurusContext(); 31 | return ( 32 | 35 | 36 |
37 | 38 |
39 |
40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /bbbeasy-docs/src/pages/markdown-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Markdown page example 3 | --- 4 | 5 | # Markdown page example 6 | 7 | You don't need React to write simple standalone pages. 8 | -------------------------------------------------------------------------------- /bbbeasy-docs/start-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | yarn serve 4 | -------------------------------------------------------------------------------- /bbbeasy-docs/static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/.nojekyll -------------------------------------------------------------------------------- /bbbeasy-docs/static/admin/admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/admin/admin.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/administration/administration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/administration/administration.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/bbbsettings/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/bbbsettings/audio.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/bbbsettings/bigbluebutton_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/bbbsettings/bigbluebutton_setting.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/bbbsettings/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/bbbsettings/finish.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/branding/Branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/branding/Branding.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/branding/brand_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/branding/brand_color.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/branding/edit_branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/branding/edit_branding.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/branding/organisation_branding_step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/branding/organisation_branding_step2.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/branding/settings_branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/branding/settings_branding.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/change_password/change_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/change_password/change_password.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/change_password/reset_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/change_password/reset_password.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Breakout Rooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Breakout Rooms.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/General.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/General.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Guest Policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Guest Policy.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Language.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Layout.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Presentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Presentation.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Screenshare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Screenshare.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Security.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Webcams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Webcams.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/Whiteboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/Whiteboard.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/ZcaleRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/ZcaleRight.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/bee_speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/bee_speed.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/bee_student.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/bee_student.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/bee_worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/bee_worker.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/favicon.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/intro.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/learning_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/learning_dashboard.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/lock_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/lock_settings.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/img/user_experience.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/img/user_experience.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/label/delete_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/label/delete_label.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/label/edit_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/label/edit_labels.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/label/labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/label/labels.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/label/new_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/label/new_label.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/label/new_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/label/new_labels.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/login/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/login/login.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/copy_preset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/copy_preset.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/delete_presete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/delete_presete.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/edit_preset_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/edit_preset_settings.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/new_preset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/new_preset.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/page_presets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/page_presets.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/presets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/presets.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/preset/rename_preset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/preset/rename_preset.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/profile/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/profile/profile.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/recording/delete_recordings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/recording/delete_recordings.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/recording/edit_recordings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/recording/edit_recordings.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/recording/recording.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/recording/recording.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/recording/save_recordings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/recording/save_recordings.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/register/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/register/register.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/role/edit_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/role/edit_permissions.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/role/new_roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/role/new_roles.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/role/role_rname.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/role/role_rname.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/role/roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/role/roles.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/create_my_first_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/create_my_first_room.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/delete-room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/delete-room.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/details_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/details_room.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/edit_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/edit_room.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/new_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/new_room.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/rooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/rooms.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/room/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/room/start.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/user/delete_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/user/delete_user.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/user/edit_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/user/edit_user.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/user/new_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/user/new_user.png -------------------------------------------------------------------------------- /bbbeasy-docs/static/user/users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-docs/static/user/users.png -------------------------------------------------------------------------------- /bbbeasy-docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // This file is not used in compilation. It is here just for a nice editor experience. 3 | "extends": "@tsconfig/docusaurus/tsconfig.json", 4 | "compilerOptions": { 5 | "baseUrl": "." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /bbbeasy-frontend/.env: -------------------------------------------------------------------------------- 1 | PORT=3300 2 | REACT_APP_API_ROUTE=/api 3 | REACT_APP_URL=http://bbbeasy.test:3300 4 | REACT_APP_FALLBACK_LANG=en-US 5 | REACT_APP_API_URL=http://bbbeasy.test/api -------------------------------------------------------------------------------- /bbbeasy-frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | # compiled output 3 | /dist 4 | # dependencies 5 | /node_modules 6 | /.pnp 7 | .pnp.js 8 | 9 | # testing 10 | /.nyc_output/** 11 | /coverage 12 | /cypress/screenshots/**/*.png 13 | /cypress/videos/**/*.mp4 14 | /instrumented/**/*.* 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | .env.local 21 | .env.development.local 22 | .env.test.local 23 | .env.production.local 24 | 25 | *.log 26 | 27 | .pnp.* 28 | .yarn/* 29 | -------------------------------------------------------------------------------- /bbbeasy-frontend/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": true, 5 | "singleQuote": true, 6 | "printWidth": 120, 7 | "quoteProps": "preserve", 8 | "arrowParens": "always" 9 | } -------------------------------------------------------------------------------- /bbbeasy-frontend/build-installer-dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf dist/ 4 | yarn run lint 5 | yarn run format 6 | yarn build-installer 7 | mkdir -p build/installer 8 | rm -rf build/installer/*.* 9 | rclone copy dist/ build/installer/ 10 | -------------------------------------------------------------------------------- /bbbeasy-frontend/build-webapp-dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf dist/ 4 | yarn run lint 5 | yarn run format 6 | yarn build 7 | mkdir -p build/webapp 8 | rm -rf build/webapp/*.* 9 | rclone copy dist/ build/webapp/ 10 | -------------------------------------------------------------------------------- /bbbeasy-frontend/cypress.config.js: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('cypress'); 2 | const { Pool } = require('pg'); 3 | 4 | const username = 'bbbeasy'; 5 | const hostname = 'localhost'; 6 | const dbname = 'bbbeasy'; 7 | const secret = 'bbbeasy'; 8 | 9 | require('dotenv').config(); 10 | module.exports = defineConfig({ 11 | e2e: { 12 | baseUrl: process.env.REACT_APP_URL, 13 | setupNodeEvents(on, config) { 14 | require("@cypress/code-coverage/task")(on, config); 15 | on("file:preprocessor", require("@cypress/code-coverage/use-babelrc")); 16 | on("task", { database({ sql, values }) { 17 | const pool = new Pool({ 18 | user: username, 19 | host: hostname, 20 | database: dbname, 21 | password: secret 22 | }); 23 | try { return pool.query(sql, values) } catch (e) { } 24 | }}); 25 | config.env = process.env; 26 | return config; 27 | } 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /bbbeasy-frontend/cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /bbbeasy-frontend/cypress/fixtures/profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 8739, 3 | "name": "Jane", 4 | "email": "jane@example.com" 5 | } -------------------------------------------------------------------------------- /bbbeasy-frontend/cypress/plugins/index.js: -------------------------------------------------------------------------------- 1 | /// 2 | // *********************************************************** 3 | // This example plugins/index.js can be used to load plugins 4 | // 5 | // You can change the location of this file or turn off loading 6 | // the plugins file with the 'pluginsFile' configuration option. 7 | // 8 | // You can read more here: 9 | // https://on.cypress.io/plugins-guide 10 | // *********************************************************** 11 | 12 | // This function is called when a project is opened or re-opened (e.g. due to 13 | // the project's config changing) 14 | 15 | /** 16 | * @type {Cypress.PluginConfig} 17 | */ 18 | // eslint-disable-next-line no-unused-vars 19 | 20 | module.exports = (on, config) => { 21 | require("@cypress/code-coverage/task")(on, config); 22 | on("file:preprocessor", require("@cypress/code-coverage/use-babelrc")); 23 | on("task", { database: (query) => require("cypress-postgres")(query.query, query.connection) }); 24 | return config; 25 | } 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/cypress/support/e2e.js: -------------------------------------------------------------------------------- 1 | import './commands'; 2 | import '@cypress/code-coverage/support'; 3 | 4 | const istanbul = require('istanbul-lib-coverage'); 5 | const map = istanbul.createCoverageMap({}); 6 | 7 | Cypress.on('window:before:unload', e => { 8 | const coverage = e.currentTarget.__coverage__; 9 | if (coverage) { 10 | map.merge(coverage); 11 | } 12 | }); 13 | 14 | Cypress.on('uncaught:exception', e => { 15 | return !e.message.includes('ResizeObserver loop limit exceeded'); 16 | }); 17 | 18 | after(() => { 19 | cy.window().then(win => { 20 | const coverage = win.__coverage__; 21 | if (coverage) { 22 | map.merge(coverage); 23 | } 24 | cy.writeFile('.nyc_output/out.json', JSON.stringify(map)); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.ttf -------------------------------------------------------------------------------- /bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.woff -------------------------------------------------------------------------------- /bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/icons/fonts/bbbeasy-icons.woff2 -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/avatar.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/education.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/education.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/favicon.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/landing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/landing.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/logo_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/logo_01.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/logo_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/logo_02.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/images/meeting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/bbbeasy-frontend/public/images/meeting.png -------------------------------------------------------------------------------- /bbbeasy-frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | BBBEasy 12 | 13 | 14 |
15 | 16 | -------------------------------------------------------------------------------- /bbbeasy-frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /bbbeasy-frontend/run-installer-dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pm2 delete all 4 | pm2 reset all 5 | pm2 start ../ecosystem/ecosystem.config.js 6 | pm2 stop bbbeasy-webapp-service 7 | -------------------------------------------------------------------------------- /bbbeasy-frontend/run-webapp-dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pm2 delete all 4 | pm2 reset all 5 | pm2 start ../ecosystem/ecosystem.config.js 6 | pm2 stop bbbeasy-installer-service 7 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import App from './App'; 20 | 21 | test('renders learn react link', () => { 22 | // render(); 23 | // const linkElement = screen.getByText(/learn react/i); 24 | // expect(linkElement).toBeInTheDocument(); 25 | }); 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/components/EmptyData.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { Empty } from 'antd'; 20 | import React from 'react'; 21 | 22 | type Props = { 23 | className?: string; 24 | description: any; 25 | }; 26 | 27 | const EmptyData = (props: Props) => { 28 | return ( 29 | 30 | {' '} 31 | 32 | ); 33 | }; 34 | 35 | export default EmptyData; 36 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/components/GuestPolicy.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { GuestPolicyType } from '../types/GuestPolicyType'; 20 | 21 | export const GuestPolicy: GuestPolicyType[] = [ 22 | { name: 'Ask moderator', key: 'askModerator', value: 'ASK_MODERATOR' }, 23 | { name: 'Always accept', key: 'alwaysAccept', value: 'ALWAYS_ACCEPT' }, 24 | { name: 'Always deny', key: 'alwaysDeny', value: 'ALWAYS_DENY' }, 25 | ]; 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/components/Languages.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { LanguageType } from '../types/LanguageType'; 20 | 21 | export const Languages: LanguageType[] = [ 22 | { name: 'English', key: 'en', value: 'en-US' }, 23 | { name: 'Français', key: 'fr', value: 'fr-FR' }, 24 | { name: 'العربية', key: 'ar', value: 'ar' }, 25 | ]; 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/components/LoadingSpinner.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import React from 'react'; 20 | import { Spin } from 'antd'; 21 | 22 | type Props = { 23 | className?: string; 24 | }; 25 | 26 | const LoadingSpinner = (props: Props) => { 27 | return ; 28 | }; 29 | 30 | export default LoadingSpinner; 31 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/components/NoData.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { Empty } from 'antd'; 20 | import React from 'react'; 21 | 22 | type Props = { 23 | className?: string; 24 | description: any; 25 | }; 26 | 27 | const NoData = (props: Props) => { 28 | return ( 29 | 34 | {' '} 35 | 36 | ); 37 | }; 38 | 39 | export default NoData; 40 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/constants.ts: -------------------------------------------------------------------------------- 1 | declare const INSTALLER_FEATURE: boolean; 2 | 3 | const _INSTALLER_FEATURE: boolean = INSTALLER_FEATURE; 4 | 5 | export { _INSTALLER_FEATURE as INSTALLER_FEATURE }; 6 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/functions/compare.function.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import _ from 'lodash'; 20 | 21 | export const CompareRecords = (oldRecord, newRecord): boolean => _.isEqual(oldRecord, newRecord); 22 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/index.css: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | /* 19 | body { 20 | margin: 0; 21 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 22 | 'Droid Sans', 'Helvetica Neue', sans-serif; 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | code { 28 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; 29 | } 30 | */ 31 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/lib/AuthHeader.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import AuthService from '../services/auth.service'; 20 | import { SessionType } from '../types/SessionType'; 21 | 22 | export const authHeader = () => { 23 | const currentSession: SessionType = AuthService.getCurrentSession(); 24 | if (currentSession != null) { 25 | // return PHPSESSID cookie in request headers 26 | return { Cookie: 'PHPSESSID=' + currentSession.PHPSESSID + ';expires=' + currentSession.expires + ';' }; 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/lib/AxiosInstance.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import axios from 'axios'; 20 | 21 | axios.defaults.withCredentials = true; 22 | 23 | export const axiosInstance = axios.create(); 24 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/lib/RoomsContext.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { createContext } from 'react'; 20 | 21 | export const DataContext = createContext(null); 22 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/lib/UserContext.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { createContext } from 'react'; 20 | 21 | export const UserContext = createContext(null); 22 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | /// 20 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/reportWebVitals.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { ReportHandler } from 'web-vitals'; 20 | 21 | const reportWebVitals = (onPerfEntry?: ReportHandler) => { 22 | if (typeof onPerfEntry === 'function') { 23 | import('web-vitals') 24 | .then((webVitals) => { 25 | const { getCLS, getFID, getFCP, getLCP, getTTFB } = webVitals; 26 | [getCLS, getFID, getFCP, getLCP, getTTFB].forEach((metric) => { 27 | metric(onPerfEntry); 28 | }); 29 | }) 30 | .catch((error) => { 31 | console.error('Error loading web-vitals:', error); 32 | }); 33 | } 34 | }; 35 | 36 | export default reportWebVitals; 37 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/routing/IRoute.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export interface IRoute { 20 | path: string; 21 | element?: JSX.Element; 22 | private?: boolean; 23 | restricted?: boolean; 24 | } 25 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/routing/config-install.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import React from 'react'; 20 | import { IRoute } from './IRoute'; 21 | 22 | import PageNotFound from '../components/PageNotFound'; 23 | import Install from '../components/Install'; 24 | 25 | export const installRoutes: IRoute[] = [ 26 | { 27 | path: '*', 28 | element: , 29 | }, 30 | { 31 | path: '/', 32 | element: , 33 | }, 34 | ]; 35 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/services/install.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { axiosInstance } from '../lib/AxiosInstance'; 20 | import { apiRoutes } from '../routing/backend-config'; 21 | 22 | class InstallService { 23 | install(data?: object) { 24 | return axiosInstance.post(apiRoutes.INSTALL_URL, { 25 | data, 26 | }); 27 | } 28 | } 29 | 30 | export default new InstallService(); 31 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/services/labels.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { axiosInstance } from '../lib/AxiosInstance'; 20 | import { apiRoutes } from '../routing/backend-config'; 21 | 22 | class LabelsService { 23 | list_labels() { 24 | return axiosInstance.get(apiRoutes.LIST_LABEL_URL); 25 | } 26 | 27 | add_label(data: object) { 28 | return axiosInstance.post(apiRoutes.ADD_LABEL_URL, { data }); 29 | } 30 | 31 | edit_label(data: object, id: number) { 32 | return axiosInstance.put(apiRoutes.EDIT_LABEL_URL + id, { data }); 33 | } 34 | 35 | delete_label(id: number) { 36 | return axiosInstance.delete(apiRoutes.DELETE_LABEL_URL + id); 37 | } 38 | } 39 | 40 | export default new LabelsService(); 41 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/services/notification.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { axiosInstance } from '../lib/AxiosInstance'; 20 | import { apiRoutes } from '../routing/backend-config'; 21 | 22 | class NotificationService { 23 | collect_notification() { 24 | return axiosInstance.get(apiRoutes.NOTIFICATION_URL); 25 | } 26 | } 27 | 28 | export default new NotificationService(); 29 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/services/preset.settings.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { axiosInstance } from '../lib/AxiosInstance'; 20 | import { apiRoutes } from '../routing/backend-config'; 21 | 22 | class PresetSettingsService { 23 | collect_preset_settings() { 24 | return axiosInstance.get(apiRoutes.COLLECT_PRESET_SETTINGS_URL); 25 | } 26 | 27 | edit_preset_settings(category: string, data: object) { 28 | return axiosInstance.put(apiRoutes.EDIT_PRESET_SETTINGS_URL, { 29 | data, 30 | category, 31 | }); 32 | } 33 | } 34 | 35 | export default new PresetSettingsService(); 36 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/services/settings.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { axiosInstance } from '../lib/AxiosInstance'; 20 | import { apiRoutes } from '../routing/backend-config'; 21 | 22 | class SettingsService { 23 | collect_settings() { 24 | return axiosInstance.get(apiRoutes.COLLECT_SETTINGS_URL); 25 | } 26 | 27 | edit_settings(data: object) { 28 | return axiosInstance.put(apiRoutes.EDIT_SETTINGS_URL, { 29 | data, 30 | }); 31 | } 32 | } 33 | 34 | export default new SettingsService(); 35 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 20 | // allows you to do things like: 21 | // expect(element).toHaveTextContent(/react/i) 22 | // learn more: https://github.com/testing-library/jest-dom 23 | import '@testing-library/jest-dom'; 24 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/GetIconName.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { categoriesIcons } from './CategoriesIcon'; 20 | 21 | export const getIconName = (name) => { 22 | return categoriesIcons[name.toLowerCase()]; 23 | }; 24 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/GuestPolicyType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type GuestPolicyType = { 20 | name: string; 21 | key: string; 22 | value: string; 23 | }; 24 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/LabelType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type LabelType = { 20 | id?: number; 21 | key?: number; 22 | name: string; 23 | description: string; 24 | color: string; 25 | nb_rooms?: number; 26 | }; 27 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/LanguageType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type LanguageType = { 20 | name: string; 21 | key: string; 22 | value: string; 23 | }; 24 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/MenuSiderType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { MenuType } from './MenuType'; 20 | 21 | export type MenuSiderType = { 22 | items: MenuType[]; 23 | news: string[]; 24 | defaultRoute: string; 25 | }; 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/MenuType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type MenuType = { 20 | name: string; 21 | icon: string; 22 | path: string; 23 | children?: MenuType[]; 24 | }; 25 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/MyPresetType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { PresetType } from './PresetType'; 20 | 21 | export type MyPresetType = { 22 | id: number; 23 | name: string; 24 | categories: PresetType[]; 25 | nb_rooms: number; 26 | }; 27 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/PaginationType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type PaginationType = { 20 | current: number; 21 | pageSize: number; 22 | }; 23 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/PresetType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { SubCategoryType } from './SubCategoryType'; 20 | 21 | export type PresetType = { 22 | id?: number; 23 | name: string; 24 | enabled: boolean; 25 | subcategories: SubCategoryType[]; 26 | }; 27 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/RecordingType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type RecordingType = { 20 | key: string; 21 | name: string; 22 | date: string; 23 | duration: string; 24 | users: number; 25 | state: string; 26 | formats: string[]; 27 | url: string; 28 | }; 29 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/RoleType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type RoleType = { 20 | key?: number; 21 | id?: number; 22 | name?: string; 23 | users?: number; 24 | permissions?: object; 25 | }; 26 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/RoomType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | import { LabelType } from './LabelType'; 20 | 21 | export type RoomType = { 22 | id: number; 23 | name: string; 24 | short_link: string; 25 | preset_id: number; 26 | labels: LabelType[]; 27 | user_id: number; 28 | }; 29 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/SessionType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type SessionType = { 20 | PHPSESSID: string; 21 | expires: string; 22 | }; 23 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/SettingsType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type SettingsType = { 20 | company_name: string; 21 | company_website: string; 22 | platform_name: string; 23 | 24 | terms_use: string; 25 | privacy_policy: string; 26 | logo: string; 27 | 28 | brand_color: string; 29 | default_font_size: number; 30 | border_radius: number; 31 | wireframe_style: boolean; 32 | self_registration: boolean; 33 | send_registration: boolean; 34 | }; 35 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/SubCategoryType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type SubCategoryType = { 20 | name: string; 21 | enabled: boolean; 22 | value: any; 23 | type: string; 24 | }; 25 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/ThemeType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type ThemeType = { 20 | brand_color: string; 21 | default_font_size: number; 22 | border_radius: number; 23 | wireframe_style: boolean; 24 | }; 25 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/UserType.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | export type UserType = { 20 | id?: number; 21 | key?: number; 22 | username: string; 23 | email: string; 24 | role: string | number; 25 | permissions?: object; 26 | status?: string; 27 | avatar?: string; 28 | nb_rooms?: number; 29 | }; 30 | -------------------------------------------------------------------------------- /bbbeasy-frontend/src/types/getRandomString.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * BBBEasy open source platform - https://riadvice.tn/ 3 | * 4 | * Copyright (c) 2022-2023 RIADVICE SUARL and by respective authors (see below). 5 | * 6 | * This program is free software; you can redistribute it and/or modify it under the 7 | * terms of the GNU Affero General Public License as published by the Free Software 8 | * Foundation; either version 3.0 of the License, or (at your option) any later 9 | * version. 10 | * 11 | * BBBeasy is distributed in the hope that it will be useful, but WITHOUT ANY 12 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | * PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License along 16 | * with BBBEasy; if not, see . 17 | */ 18 | 19 | const characters = 'abcdefghijklmnopqrstuvwxyz1234567890'; 20 | 21 | export const getRandomString = () => { 22 | let result = ''; 23 | for (let j = 0; j < 2; j++) { 24 | for (let i = 0; i < 6; i++) { 25 | result += characters.charAt( 26 | Math.floor((crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32) * characters.length) 27 | ); 28 | } 29 | if (j != 1) { 30 | result += '-'; 31 | } 32 | } 33 | return result; 34 | }; 35 | -------------------------------------------------------------------------------- /bbbeasy-frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./src", 4 | "target": "es5", 5 | "lib": [ 6 | "es5", 7 | "dom", 8 | "dom.iterable", 9 | "esnext" 10 | ], 11 | "types": [ 12 | "cypress" 13 | ], 14 | "allowJs": true, 15 | "skipLibCheck": true, 16 | "esModuleInterop": true, 17 | "allowSyntheticDefaultImports": true, 18 | "noImplicitAny": false, 19 | "strict": false, 20 | "forceConsistentCasingInFileNames": true, 21 | "noFallthroughCasesInSwitch": true, 22 | "module": "esnext", 23 | "moduleResolution": "node", 24 | "resolveJsonModule": true, 25 | "isolatedModules": true, 26 | "noEmit": true, 27 | "jsx": "react", 28 | }, 29 | "include": [ 30 | "src" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /docker/phinx.yml: -------------------------------------------------------------------------------- 1 | paths: 2 | migrations: '%%PHINX_CONFIG_DIR%%/db/migrations' 3 | seeds: '%%PHINX_CONFIG_DIR%%/db/seeds' 4 | 5 | environments: 6 | default_migration_table: phinxlog 7 | default_database: development 8 | production: 9 | adapter: pgsql 10 | host: bbbeasy_db 11 | name: bbbeasy 12 | user: bbbeasy 13 | pass: 'bbbeasy' 14 | port: 5432 15 | charset: utf8 16 | 17 | development: 18 | adapter: pgsql 19 | host: localhost 20 | name: bbbeasy 21 | user: bbbeasy 22 | pass: 'bbbeasy' 23 | port: 5432 24 | charset: utf8 25 | 26 | testing: 27 | adapter: pgsql 28 | host: localhost 29 | name: bbbeasy_test 30 | user: bbbeasy_test 31 | pass: 'bbbeasy_test' 32 | port: 5432 33 | charset: utf8 34 | 35 | version_order: creation 36 | -------------------------------------------------------------------------------- /docker/php.ini: -------------------------------------------------------------------------------- 1 | apc.enable_cli = 1 2 | date.timezone = Africa/Tunis 3 | session.auto_start = Off 4 | short_open_tag = Off 5 | post_max_size = 10M 6 | upload_max_filesize = 5M 7 | 8 | # http://symfony.com/doc/current/performance.html 9 | opcache.max_accelerated_files = 20000 10 | opcache.memory_consumption = 256 11 | realpath_cache_size = 4096K 12 | realpath_cache_ttl = 600 13 | 14 | # hide version number php Http Header 15 | expose_php = Off 16 | 17 | #XDEBUG Config 18 | xdebug.start_with_request=no 19 | xdebug.discover_client_host=false 20 | xdebug.mode=off 21 | xdebug.idekey=PHPSTORM 22 | -------------------------------------------------------------------------------- /docker/www-bbbeasy.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = root 3 | group = root 4 | pm.max_children = 27 5 | pm.start_servers = 8 6 | pm.min_spare_servers = 4 7 | pm.max_spare_servers = 12 8 | pm.max_requests = 64 9 | -------------------------------------------------------------------------------- /ecosystem/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | .pnp.* 5 | .yarn/* -------------------------------------------------------------------------------- /ecosystem/config/.env: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riadvice/bbbeasy/59a0631f61ef4c45d751901e690914f54925f3a9/ecosystem/config/.env -------------------------------------------------------------------------------- /ecosystem/config/global.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | // load env config 4 | const localConfig = require('dotenv').config({ path : ".env" }); 5 | 6 | if (localConfig.error) { 7 | console.error("error occured please specify the environment config"); 8 | throw localConfig.error; 9 | } 10 | 11 | // use absolute path if needed 12 | const rootPath = "../"; 13 | 14 | // if you needed secret config variables (credentials, apiKeys, tokens) put them in env variables as stated in 15 | // const someConfig = localConfig["secret"]; 16 | 17 | module.exports = { 18 | rootPath, 19 | // someConfig 20 | }; 21 | -------------------------------------------------------------------------------- /ecosystem/config/services/bbbeasy-installer-service.js: -------------------------------------------------------------------------------- 1 | const globalConfig = require("../global"); 2 | 3 | module.exports = { 4 | name: "bbbeasy-installer-service", 5 | script: "serve", 6 | watch: true, 7 | // env variables if needed 8 | env: { 9 | NODE_ENV: "development", 10 | PM2_SERVE_PATH: `${globalConfig.rootPath}bbbeasy-frontend/build/installer`, 11 | PM2_SERVE_PORT: 3300, 12 | PM2_SERVE_SPA: 'true', 13 | PM2_SERVE_HOMEPAGE: '/index.html' 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /ecosystem/config/services/bbbeasy-webapp-service.js: -------------------------------------------------------------------------------- 1 | const globalConfig = require("../global"); 2 | 3 | module.exports = { 4 | name: "bbbeasy-webapp-service", 5 | script: "serve", 6 | watch: true, 7 | // env variables if needed 8 | env: { 9 | NODE_ENV: "development", 10 | PM2_SERVE_PATH: `${globalConfig.rootPath}bbbeasy-frontend/build/webapp`, 11 | PM2_SERVE_PORT: 3300, 12 | PM2_SERVE_SPA: 'true', 13 | PM2_SERVE_HOMEPAGE: '/index.html' 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /ecosystem/config/services/index.js: -------------------------------------------------------------------------------- 1 | const bbbeasyFrontendService = require("./bbbeasy-webapp-service"); 2 | const bbbeasyInstallerService = require("./bbbeasy-installer-service"); 3 | 4 | module.exports = [ 5 | bbbeasyFrontendService, 6 | bbbeasyInstallerService, 7 | ]; 8 | -------------------------------------------------------------------------------- /ecosystem/ecosystem.config.js: -------------------------------------------------------------------------------- 1 | const servicesConfig = require("./config/services/"); 2 | 3 | module.exports = { 4 | apps : servicesConfig 5 | }; 6 | -------------------------------------------------------------------------------- /ecosystem/node_modules/dotenv/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Scott Motte 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | -------------------------------------------------------------------------------- /ecosystem/node_modules/dotenv/config.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /ecosystem/node_modules/dotenv/config.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | require('./lib/main').config( 3 | Object.assign( 4 | {}, 5 | require('./lib/env-options'), 6 | require('./lib/cli-options')(process.argv) 7 | ) 8 | ) 9 | })() 10 | -------------------------------------------------------------------------------- /ecosystem/node_modules/dotenv/lib/cli-options.js: -------------------------------------------------------------------------------- 1 | const re = /^dotenv_config_(encoding|path|debug|override)=(.+)$/ 2 | 3 | module.exports = function optionMatcher (args) { 4 | return args.reduce(function (acc, cur) { 5 | const matches = cur.match(re) 6 | if (matches) { 7 | acc[matches[1]] = matches[2] 8 | } 9 | return acc 10 | }, {}) 11 | } 12 | -------------------------------------------------------------------------------- /ecosystem/node_modules/dotenv/lib/env-options.js: -------------------------------------------------------------------------------- 1 | // ../config.js accepts options via environment variables 2 | const options = {} 3 | 4 | if (process.env.DOTENV_CONFIG_ENCODING != null) { 5 | options.encoding = process.env.DOTENV_CONFIG_ENCODING 6 | } 7 | 8 | if (process.env.DOTENV_CONFIG_PATH != null) { 9 | options.path = process.env.DOTENV_CONFIG_PATH 10 | } 11 | 12 | if (process.env.DOTENV_CONFIG_DEBUG != null) { 13 | options.debug = process.env.DOTENV_CONFIG_DEBUG 14 | } 15 | 16 | if (process.env.DOTENV_CONFIG_OVERRIDE != null) { 17 | options.override = process.env.DOTENV_CONFIG_OVERRIDE 18 | } 19 | 20 | module.exports = options 21 | -------------------------------------------------------------------------------- /ecosystem/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ecosystem", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "ecosystem.config.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "dotenv": "^16.1.4" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ecosystem/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | dotenv@^16.1.4: 6 | version "16.1.4" 7 | resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz" 8 | integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw== 9 | -------------------------------------------------------------------------------- /package/.gitignore: -------------------------------------------------------------------------------- 1 | workspace/* 2 | -------------------------------------------------------------------------------- /package/bbbeasy.dockerignore: -------------------------------------------------------------------------------- 1 | bbbeasy-backend/app/config/config-*.ini 2 | bbbeasy-backend/app/config/default.ini 3 | bbbeasy-backend/logs/*.log 4 | -------------------------------------------------------------------------------- /sample.env: -------------------------------------------------------------------------------- 1 | API_HOST= 2 | WEBAPP_HOST= 3 | 4 | -------------------------------------------------------------------------------- /vagrant/config/.gitignore: -------------------------------------------------------------------------------- 1 | # local configuration 2 | vagrant-local.yml -------------------------------------------------------------------------------- /vagrant/config/vagrant-local.example.yml: -------------------------------------------------------------------------------- 1 | # Guest OS timezone 2 | timezone: Africa/Tunis 3 | 4 | # Are we need check box updates for every 'vagrant up'? 5 | box_check_update: true 6 | 7 | # Virtual machine name 8 | machine_name: bbbeasy 9 | 10 | # Virtual machine IP 11 | ip: 192.168.55.55 12 | 13 | # Virtual machine CPU cores number 14 | cpus: 2 15 | 16 | # Virtual machine RAM 17 | memory: 4096 18 | -------------------------------------------------------------------------------- /vagrant/dev/nginx/log/.gitignore: -------------------------------------------------------------------------------- 1 | # nginx logs 2 | 3 | *.log 4 | -------------------------------------------------------------------------------- /vagrant/dev/php-fpm/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug 2 | xdebug.remote_enable=1 3 | xdebug.remote_connect_back=1 4 | xdebug.remote_port=9000 5 | xdebug.remote_autostart=1 6 | xdebug.mode=coverage -------------------------------------------------------------------------------- /vagrant/provision/always-as-root.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source /app/vagrant/provision/common.sh 4 | 5 | #== Provision script == 6 | 7 | info "Provision-script user: `whoami`" 8 | 9 | info "Restart web-stack" 10 | # TODO: get param from the vagrant provision config 11 | hostnamectl set-hostname bbbeasy.test 12 | service php8.2-fpm restart 13 | service nginx restart 14 | service postgresql restart 15 | -------------------------------------------------------------------------------- /vagrant/provision/common.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | #== Bash helpers == 4 | 5 | function info { 6 | echo " " 7 | echo "--> $1" 8 | echo " " 9 | } 10 | -------------------------------------------------------------------------------- /vagrant/provision/once-as-vagrant.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source /app/vagrant/provision/common.sh 4 | 5 | #== Provision script == 6 | 7 | info "Provision-script user: $(whoami)" 8 | sudo usermod -aG docker $USER 9 | 10 | info "Install project dependencies" 11 | cd /app/bbbeasy-backend/ 12 | composer --no-progress --prefer-dist install --ignore-platform-req=ext-xdebug 13 | "vendor/bin/phinx" migrate -vvv 14 | 15 | cd /app/bbbeasy-frontend/ 16 | yarn set version berry 17 | sudo chown -R vagrant: /home/vagrant/.yarn/ 18 | yarn install 19 | pm2 install pm2-logrotate 20 | yarn add global serve 21 | yarn add global ts-node 22 | 23 | info "Create bash-alias 'app' for vagrant user" 24 | echo 'alias app="cd /app"' | tee /home/vagrant/.bash_aliases 25 | 26 | info "Enabling colorized prompt for guest console" 27 | sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/" /home/vagrant/.bashrc 28 | --------------------------------------------------------------------------------