GithubHelp home page GithubHelp logo

thm-health / pilos Goto Github PK

View Code? Open in Web Editor NEW
47.0 47.0 15.0 53.92 MB

PILOS is an easy-to-use open source front-end for BigBlueButton servers with a built-in load balancer. Docker-Images: https://hub.docker.com/r/pilos/pilos

License: GNU Lesser General Public License v2.1

PHP 80.75% Shell 0.75% Vue 18.37% Blade 0.02% Dockerfile 0.10%
bigbluebutton

pilos's People

Contributors

andreasthum avatar danielmachill avatar dependabot[bot] avatar dsst95 avatar github-actions[bot] avatar lakano avatar ninjaopossum avatar rhrt04 avatar sabr1n4w avatar samuelwei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pilos's Issues

Room limit display

Describe the bug
The amount of rooms a user has only count the rooms on the current page of the pagination and not the total amount.

To Reproduce
Steps to reproduce the behavior:

  1. Add room limit for user or global
  2. Create as many rooms so the rooms are split up to multiple pages
  3. Navigate between the pages and see the amount of rooms changing

Expected behavior
Show to total amount of rooms not the amount of rooms on the current page

Screenshots
image
image

Improve NotFoundExceptions

Is your feature request related to a problem? Please describe.
At the moment you get a message like that "No query results for model [App\MODELNAME] ID" on 404 errors. That message is not translated and might not be easy to understand for users. We should implement a better solutution to show 404 errors that just the server generated message.

Describe the solution you'd like
Implement a custom 404 handler like that in app/Exceptions/Handler.php and pass model name and not found ids to frontend and implement a better display solution there.

        if ($request->ajax() || $request->wantsJson())
        {
            if ($exception instanceof ModelNotFoundException) {
                $json = [
                    'message' => $exception->getMessage(),
                    'model' => $exception->getModel(),
                    'ids' => $exception->getIds(),
                ];
                return response()->json($json, 404);
            }
        }

Describe alternatives you've considered
Implement a custom 404 handler for each call, but that is propably not worth it and could still be used in some special cases.

Change size of flash meesages

Is your feature request related to a problem? Please describe.
Currently the flash messages are really big so that they take eat up a lot of space in the application.

Describe the solution you'd like
Make the flash messages smaller.

User invitation

Is your feature request related to a problem? Please describe.
Like in greenlight it should be possible to invite users.

Describe the solution you'd like
It should be possible to activate a user invitation through a user setting. The user who can manage users should have the possibility to invite new users through a email. If the invitation is not activated the neither the routes nor the button should be shown. Also a table with pending invitations should exists.

Add menu for settings

Describe the solution you'd like
To manage the settings of the application a new navigation link must be added to the navigation bar, from which the application settings view can be accessed. This should be placed in the dropdown over the logout item. For each setting (e.g. users, roles, etc.) a subroute with a custom view should be used and only be shown if the user has the permissions to view them.

Persists account type for users

Describe the solution you'd like
Add a property to the user model, to discriminate the account/authenticator types between the different users.
On creation of user model through ldap login the appropriate authenticator should be set on the model.

LDAP role sync

Describe the bug
Due to restrictions at the local university, some ldap attributes (e.g. roles) are only accessible to the users themselves and not via anonymous binding. The current behavior only results in a binding with the credentials. The access to the LDAP entry that should be loaded all future requrests do not use this binding. Therefore important attributes are missing.

To Reproduce
Steps to reproduce the behavior:

  1. Clear user from database
  2. Adjust role binding in .env
  3. Login
  4. Check roles

Expected behavior
Read roles from database

Additional context
A bond can be achieved in the following way: DirectoryTree/LdapRecord-Laravel#99 (comment)

Flash messages

Describe the solution you'd like
For more responsiveness it would be useful if there would be flash messages that gets shown on the right side or below the navigation bar, for example if an error occurs or if an action was successful.

User not logged out on error 401

Describe the bug
The global error helper show a custom error message for 401 errors (in some cases multiple) and is redirecting to the login page.
However, the current user object is not cleared, so all menu items still exists.

To Reproduce
Steps to reproduce the behavior:

  1. Go to home
  2. Delete user account on api server
  3. Navigate to room lis
  4. See error

Expected behavior
The user should only see one 401 error message and gets logged out.

Room limit calculation

Describe the bug
The user specific room limit is calculated wrong

To Reproduce
Steps to reproduce the behavior:

  1. Set global room limit to 5
  2. Create new role
  3. Add user to the role
  4. Set role limit to 0
  5. Check room limit and see a limit of 5

Expected behavior
The role limit is higher than the global limit, therefor the user shouldn't be allowed to have any rooms = 0

Agreement before file download

Is your feature request related to a problem? Please describe.
Users should be informed that files downloaded from pilos are for personal use only and may not be distributed on the Internet or shared with other people.

Describe the solution you'd like
Add a consent checkbox before download

Describe alternatives you've considered
Add a simple text message without checkbox

Additional context
none

Create new room

Is your feature request related to a problem? Please describe.
Currently there is no way to create a new room with the ui

Describe the solution you'd like
Add a modal to the room listing page to create a new room.

Describe alternatives you've considered
none

Additional context
none

User registration, email verification and password reset

Describe the solution you'd like
It should be possible to activate user registration trough a application setting. Also the database users should have the possibility to reset their password and a configurable email verification should be implemented.
Consider that different users, e.g. database and ldap users, can have the same email!

Room and server live data and statistics

Is your feature request related to a problem? Please describe.
For rooms and servers data about the usage should be constantly collected and stored for statistical purposes.

Describe the solution you'd like
A scheduled task should check the status of each server every minute and save the current amount of users, webcams, meetings, etc. as well as the status online/offline.

The scheduled task should also log the same details for all meetings and create a meeting history for all rooms.

Broken end of meeting hash calculation

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to a room
  2. Click on 'Start'
  3. End meeting in BBB
  4. Return and see meeting is still running

Expected behavior
Once a meeting is closed, the running indicator changes to not running.

Additional context
The reason for this behavior is a wrong calculation of the meeting end hash

Management of application settings

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
For the settings which are persisted to the database (e.g. logo and room_limit) a management page should be implemented. Also other application settings may be moved to the database.

Describe alternatives you've considered
No

Additional context
No

Non handled error messages not shown

Describe the bug
Errors that are not handled explicitly in the components or views are not handled or shown with a message box.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the rooms index
  2. Trick the api to return a 500 error
  3. Reload page
  4. See error only in the terminal but not as a message box

Expected behavior
Handle all errors, explicit handled errors in components and view, as well as all others.

Implement shibboleth sso authentication

Describe the solution you'd like
Add a authentication through the shibboleth sso. Also the possible authentication types should be made configurable, so that unwanted authentications wouldn't be available. Consider that the routes in the backend shouldn't be available if an authenticator gets disabled by.

Permissions and Roles

Describe the solution you'd like
Roles and permissions are necessary, to allow user, room management and maybe in feature the management of bbb servers only for user with specific roles. Every request to the backend should be checked if it is permitted to the current user or not. Also hiding of specific views and components depending on the user permissions should be considered.

Additional context
For the frontend the casl-vue package could be used. See at the laravel documentations for the authorization in the backend. It also makes sense to save the roles and corresponding permissions in the database so a migration will be necessary. Consider creating a management interface for roles and their corresponding permissions for admins of PILOS.

Room list

Is your feature request related to a problem? Please describe.
The admin should have an overview of all rooms.

Describe the solution you'd like
The list should show the room type, owner, status (running/not running), room name, stats if the room is running (users, video, audio), the server and serverpool

The list should be search and sortable. The component should be generic enough to be used at other places in the system.
The room settings should get a new attribute, like: listed for all users.
Add a room list search and filter for all users to find rooms with these attributes. (Like the course search in moddle)
The list for all users should have roomtype, room name, owner.

Prevent update requests if model is obsolete

Describe the solution you'd like
In order to prevent updates of a model if the model was changed by another user in the meanwhile a middleware should be implemented, that checks the updated_at field provided by a the request parameters against the field in the database. If the model in the database is newer, a error response containing the new model should be returned. Otherwise the request should be proceeded.

Loading overlay and reload for forms

Is your feature request related to a problem? Please describe.
Currently there are forms on the settings pages and maybe on other pages, that just disable the form fields during load and on errors the form fields can be edited, even if the model was not loaded.

Describe the solution you'd like
A overlay on all forms should be added, which shows a loading indicator while the form is busy and on errors during the load of the model a reload overlay gets displayed.

Additional context
A possible solution was already implemented in the application settings form in 2a7ee10.

Enable recordings

Is your feature request related to a problem? Please describe.
no

Describe the solution you'd like
Add checkbox to room settings to allow recordings for a meeting. If true enforce agreement on joining of meeting.

Describe alternatives you've considered
no

Additional context
no

Error messages not cleared on profile page/user page

Describe the bug
The errors of a previous form submission are not cleared on a successful submission.

To Reproduce
Steps to reproduce the behavior:

  1. Go to profile
  2. Cause any form validation error (eg. enter password, but leave password confirmation empty)
  3. Click save
  4. Enter both passwords
  5. Click save again
  6. See error message still appears

Expected behavior
Errors should be cleared on a successful submission or before each new submission.

Role admin list language change

Describe the bug
On the role management page for Admins, the table headings do not change if the language is changed after the page is loaded.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'settings/roles'
  2. Click on 'Change language'
  3. See everything except the table headings changed

Expected behavior
Change language of the table headings

Screenshots
image

Room type presets

Is your feature request related to a problem? Please describe.
In #62 the basis room attributes are introduced. In addition to the already existing attributes each RoomType should have some more attributes that effect the room settings for all rooms with this type.

Describe the solution you'd like
A RoomTypeSettings Model should be created.
For each RoomType the RoomTypeSettings should be editable.
Each RoomTypeSetting (predefined list via seeder) can be set, accordingly to its content type and enforced.
Enforced means that the user cannot change the setting in the room settings. If the RoomType is changed, apply the enforced settings: overwrite and lock.
E.g. RoomType "Private Meeting" -> enforce 'allow guests' disabled and require access code.
If a setting is not enforced the settings are applied once on creation of new meetings with this type.

Describe alternatives you've considered

--

Additional context
Future ideas

  • Add server clusters for each room type and enforce selection (solved in #99)
  • Grant access to room types for some groups, e.g. Students can only create 'small group' meetings, limited in the duration, max. participants and server pool (see #98)

Personalised room links

Is your feature request related to a problem? Please describe.
It should be possible to create a personalised room link for a meeting. This is for those cases where the general allow guest rule it to broad, but it would also make no sence to create a new user account for this person.

Describe the solution you'd like
Add a new section to the room overview, next to members and files. or implement feature into the members section.

Clicking on a create button opens a modal, asking for the persons name and role (participant or moderator). Once completed, a link should be shown. All personalised room links should be shown in a table, so the name and role can be edited and removed. The actual link could be hidden behind a button to make the table more clean.

If someone is using this link, they should not be required to enter a room acccess code. They can't modify their name, as it is set by the data in the database.

UI ideas
persroomlinks
image

Loading screen on requests during route changes

Describe the solution you'd like
Currently if data is loading during a route change (e.g. logging out) or on initialization of the application there is no loading indicator. To get more feedback a loading screen is necessary.

Additional context
The loading screen could be an overlay over the complete page where is a text and a corresponding status icon.
This could be realized by adding a component/div that gets shown if, for example a loading counter (number of running requests) in the store is grather than 0.

Improve github action speed

Is your feature request related to a problem? Please describe.
Currently each run takes about 6 minutes, that is quite long - bad for developers and github ressources. The speed should be improved.

Describe the solution you'd like
Adding caching for unchanged composer and node packages should improve the performance a bit.

Room type management

Is your feature request related to a problem? Please describe.
Right now there are some default room types created with the seeder. It should be possible to change the default room types and add new ones. For each room type there should be a name, a short name (e.g. Exam -> EX) and a color for the room type icon.

Describe the solution you'd like
A CRUD admin page should be created to manage RoomTypes.
For each RoomType the settings (name, short name and color) should be editable.

Missing translations for room type permissions

Describe the bug
On the role edit page the translations are missing for the room type permissions.
The translation strings are also not updated if the lang. is changed via the menu, only after a page reload.

To Reproduce
Steps to reproduce the behavior:

  1. Go to settings -> roles -> select role
  2. See translation missing
  3. Click on lang. changer in the menu and change lang.
  4. See lang. not changing in the permissions list

MemberComponent frontend tests

Is your feature request related to a problem? Please describe.
The room member component isn't covered with frontend tests. That makes it hard to evaluate proper functionality on changes.

Describe the solution you'd like
Cover all methods of the room member component with frontend tests

Describe alternatives you've considered

Additional context

Password confirmation for critical pages

Is your feature request related to a problem? Please describe.
Currently the settings and own profile can be modified if the user is logged in and for some reason another person gets access to the opened application.

Describe the solution you'd like
This should be prevented by adding a password confirmation for critical pages, so before executing actions like updating the own users profile or other application settings the user must input his password. What also should be considered is a too long opened page after the password confirmation, e.g. the own profile page. In this case on save the user should reconfirm his password.

Describe alternatives you've considered
No alternatives.

Additional context
A possible solution was removed in 9a4433c due to missing checks.

Application settings

Is your feature request related to a problem? Please describe.
Currently application wide settings can only be defined with the config helper and the .env files.
There is no way to change these settings persistent other than changing the .env file.

Describe the solution you'd like
Implement or add a package to save settings in the database.
Add some examples, e.g. logo and room limit.

Describe alternatives you've considered
none

Additional context
Possible packages:

Server management

Is your feature request related to a problem? Please describe.
Create views and controller to show, add, update and delete servers.

Describe the solution you'd like
Servers should be added to the database via the web interface and group to server pools.

A list should give you an overview of all servers in the system.
The list should also show the online status and amount of meetings. If you click on a server you should see all meetings running on the server at the moment.

Each server should be editable and its status, as well as some in #29 required parameters should be configurable.

Describe alternatives you've considered
none

Maintenance/Info banner

Is your feature request related to a problem? Please describe.
Like in greenlight it would be great to have a banner for maintenance or other information.

Describe the solution you'd like
Adding application settings for info banner: enabled/disabled, color/bootstrap variant, message (html code)

Describe alternatives you've considered
Having a html code message can be dangerous. To allow some basic features, adding an icon, heading, message text and link (each optional) could be an alternative.

Additional context
Example screenshot
image

Theming

Is your feature request related to a problem? Please describe.
With some bbb params, the room style can be modified. (https://docs.bigbluebutton.org/admin/customize.html#examplesn) We should take advantage of it and provide a css file that is handed over to the bbb room.
Ideally the css can be changed via the gui and effect the frontend and the bbb-room.

Describe the solution you'd like
Create two urls that provide the theming css for the frontend and bbb room.

Describe alternatives you've considered
On any theming change, create the two css files, write them to the hard drive and serve as static files (performance increase), that is the way greenlight handles it.

Additional context
none

Remove room

Is your feature request related to a problem? Please describe.
At the moment rooms can only be created, accessed and managed. There is no way to remove a room.

Describe the solution you'd like
Remove a room if requested and confirmed by owner. If a meeting of the room is still running, force end to prevent bypass of room limit.

Describe alternatives you've considered
None

Additional context
None

Add more managable application settings

Is your feature request related to a problem? Please describe.
Currently only a part of the application settings is manageable.

Describe the solution you'd like
Add more settings to the application manage view. For example:

  • Mail config?
  • Ldap config? (may not work if you must login!)
  • Ldap role mapping
  • Default locale
  • Selectable locales

Room view

Creating a view for users and teachers to manage a room, its users, ressources and abiliy to start/enter meeting,

User preferences

Is your feature request related to a problem? Please describe.
Like in greenlight, a user preference page would be great.

Describe the solution you'd like
On the page some user attributes can be displayed and edited.

Describe alternatives you've considered
none

Additional context

Pagination for room list

Is your feature request related to a problem? Please describe.

Shouldn't we add a pagination, for the case if the user has 100 or more rooms?

Originally posted by @dennis95stumm in #36 (comment)

Describe the solution you'd like

Add pagination to list of rooms to prevent long page loads and a long list on the users dashboard

Describe alternatives you've considered
None

Additional context
None

Localization and remove hardcoded links

Is your feature request related to a problem? Please describe.
Currently the text of buttons etc. is hard coded in the templates of the components. This makes it impossible to translate the application to different languages.

Describe the solution you'd like
A localiation should be added to the frontend. Keep in mind that error messages that come from the backend also should be translated. Links for images should be replaced by images that are in this repository. Links for the help (e.g. Was ist meine Benutzerkennung?) should be configurable.

Virus scan on fileupload

Is your feature request related to a problem? Please describe.
Currently there a limited checks for fileuploads, that could lead to security issues

Describe the solution you'd like
Check mime before upload and use clamAV to check files

Implement load balancer

Is your feature request related to a problem? Please describe.
The system should use a load balancer for creating new meetings and display server status.
Similar to https://github.com/blindsidenetworks/scalelite

Describe the solution you'd like
Use data collected by #64 for each new meeting to calculate the server load based on amount of meetings and estimated network traffic, cpu usage, etc. and use a server specific multiplicator to handle different hardware.

Use the server with the lowest load of the server pool (#30) the room has selected and try to create meeting. If not possible, try next less loaded server. If all servers are not available throw error.

Describe alternatives you've considered
Just use https://github.com/blindsidenetworks/scalelite

User management

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Admin page & api controller for external user CRUD and LDAP RUD.

Describe alternatives you've considered
None

Additional context
Compare to greenlight user management

Impress, Privacy policy and Cookies

Is your feature request related to a problem? Please describe.
Currently there isn't any message about the used cookies and no links to an impress and a privacy policy.

Describe the solution you'd like
To be compliant with the laws of different countries this informations are necessary. At the bottom of the application should be a footer that has links (configurable) to the impress and privacy policy. Also a message about cookies should be added to be compliant with the GDPR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.