Commit Graph

534 Commits (a241ce1bcd7e6f13b09fb4b2f3f44b7109a42760)
 

Author SHA1 Message Date
Alejandro Sirgo Rica 50dbc81706 views: notify user edit and user creation
Show a flash message when an user is created or edited successfully.
2024-06-28 08:43:20 +02:00
Alejandro Sirgo Rica 7d3567919a views: fix English grammatical error in error message
Replace "do not exists" with "does not exist" in error messages.
2024-06-28 08:42:53 +02:00
Alejandro Sirgo Rica 20bdd4175e templates: fix user form alignment
Add class="mx-5" to allign the form with the header of the page.
2024-06-27 10:25:11 +02:00
Alejandro Sirgo Rica 5ad2d2e72c ogcp: improve page heading style
Make headings take less space and have a dashed line under them.
2024-06-27 10:14:23 +02:00
Alejandro Sirgo Rica 977b457d5c ogcp: add user permission mechanism
Add a new user permission system to control the allowed operations
accessible from each account.

Add a permission matrix editable through the user/add and user/edit
views. The permission matrix has client, center, room, folder, image
and repository as permission targets and add, update and delete as
permission types.

Restrict each view based on the user permissions, hide all actions
from not autheticated users.

permissions defined in the class UserForm.

Serialize each user permissions into ogcp.json as:
{
  ...
  "USERS" [
    {
      "USER": "admin"
      ...
      "PERMISSIONS": {
        "CLIENT": {
          "ADD": true,
          "UPDATE": true,
          "DELETE": true,
        },
        ... <- same structure for "CENTER", "ROOM", "FOLDER", "IMAGE"
               and "REPOSITORY"
      }
    },
    ...
  ],
  ...
}

Grant all the permissions to old user configuration to not disrupt their
workflow. The administrator will need to assign the permissions for each
user.

Ignore scope and permission restrictions for admin users.

Save permissions and scopes even if the user is admin to account for the
case of a temporal admin promotion without losing the previous
configuration.

Use template inheritance for add_user.html and edit_user.html to prevent
big code duplication with the new HTML code to render the permission
matrix.

Make user administration an admin only feature.

Define methods get_permission and target_is_disabled to improve readability
in template conditionals that disable features based on user permissions.
2024-06-27 10:03:14 +02:00
Alejandro Sirgo Rica 25bb1ff73b templates: rename Edit client to Update client
Rename Client/Edit client menu in scopes management view to keep
the same naming pattern as the other menu elements.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 0ed9ecdae9 ogcp: add support to view script output
Add view at /action/script/output to visualize the result of
/shell/run for multiple clients.

Use shell/output to request the execution data of the selected clients.

Each client element has execution timestamip (UTC), client ip, cmd,
return code and stdout of the executed command.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica af8236b189 ogcp: add support to run scripts in clients
Add view at /action/script/run to visualize the available scripts
and run a single script file in the selected clients.

Use shell/list to request the script list and shell/run API call
to request the execution.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 8bcd8fd7a4 templates: make opengnsys buttom redirect to dashboard
Add functionality to the "Opengnsys" text in the top navbar.
Comform to the general design priciple of executing a redirecting
after clicking the main logo.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 6a793ef0d1 views: remove unsupported partition types from image operations
Prevent unexpected behaviour in image operations caused by user
error.

Remove partitions of type 'EMPTY', 'LINUX-SWAP', 'CACHE' and  'EFI'
from the image/create, image/restore and image/update forms.

Remove check for the existence of these partitions in
action_image_restore as they are no longer available in the form.
2024-06-25 13:52:10 +02:00
Alejandro Sirgo Rica d46badaf82 templates: rename Start session to Boot OS
Use a better name for the form action used to boot an operating
system in the clients.
2024-06-20 14:59:24 +02:00
Alejandro Sirgo Rica 992d3b847a templates: show client details at the end of the client options
Move "Client details" to the last option of the "Client" dropdown
in the Commands page.
2024-06-20 14:57:32 +02:00
Alejandro Sirgo Rica 29cc4d9280 views: prevent user removal after password mismatch in user/edit
If password and confirm password fields mismatch in user/edit,
then the user is deleted.

The deletion of the user happens before the password validation
and the new user configuration is only saved if the validation
passes.

Add code to properly handle the user deletion after the validation.
2024-06-19 13:19:55 +02:00
Alejandro Sirgo Rica ee42cbd323 views: make password optional in user/edit
Add the option to leave the password fields empty in the form.
When the passwords are not set the user keeps the old password
configuration.
Define a EditUserForm based on UserForm in forms/auth.py to remove
the InputRequired validator in the password fields.
Update the html template to make the password fields optional.
2024-06-19 11:53:56 +02:00
Alejandro Sirgo Rica 2ae6f37e60 views: improve cache check messages in image/restore
Improve the wording of the error message reporting the clients
without enough cache to hold the image to be restored.
2024-06-19 10:55:23 +02:00
Alejandro Sirgo Rica 521b7c81ac views: check if the image fits in cache before image/restore
Check if the image to be restored fits in the client's cache to
provide a better feedback for a failed restore operation.
Report the needed free space in clients where it does not fit.
Only check if the reported image size is not 0, older images
may not define the "size" attribute.
Ignore the check if the restore type is UNICAST-DIRECT.
2024-06-18 16:08:24 +02:00
Alejandro Sirgo Rica 3c4b917280 views: ignore image datasize check if datasize is zero
Check the restored image fits in the target partition only if
the datasize value is not zero. Proceed with the check before
the image/restore request otherwise.
2024-06-18 12:43:46 +02:00
Alejandro Sirgo Rica e9a9ec467e templates: remove servers view in main navbar
Remove the Servers button from the main navbar but keep the
multiserver related code.
2024-06-18 10:56:45 +02:00
Alejandro Sirgo Rica f8969b3d5e css: offset the sidebar to acommodate all disclosure widgets
Add a left padding to show the disclosure widget associated to
a server item. Prevent the positioning of out of screen components.
2024-06-18 10:38:20 +02:00
Alejandro Sirgo Rica 48bc51ca0a js: show correct initial disclosure widget state
Add the class "collapsed" to the html elements defined as
not shown in the local storage for the images list sidebar.
2024-06-17 17:44:24 +02:00
Alejandro Sirgo Rica a7423d2943 ogcp: add room details view to scopes management
Add a readonly view for the room data.
Mark all the form fields as readonly and set the hidden attribute
to the submit field.
2024-06-17 17:10:05 +02:00
Alejandro Sirgo Rica d135a4806d ogcp: add center details view to scopes management
Add a readonly view for the center data.
Mark all the form fields as readonly and set the hidden attribute
to the submit field.
2024-06-17 17:06:01 +02:00
Alejandro Sirgo Rica 74c55987ef views: fix image restore cache checks
Fix the scope of the has_cache variable to reset the value for
each client.
Check the partition type based on the PART_TYPE_CODES string version
instead of the numerical value of the partition type.
2024-06-17 14:09:49 +02:00
Alejandro Sirgo Rica 4a74de1064 ogcp: add move client to scopes management
Add front end for the client/move REST API.
Enable the move of multiple clients selected from the sidebar of
Scopes Management.
Show the target of the move operation as a list of paths in a
dropdown widget in the form. Each path will be structured as:
Server/Center/Room
The path will also contain folders if they are present.
2024-06-17 14:03:00 +02:00
Alejandro Sirgo Rica 664ad2bf7b templates: remove console.log statement in mode.html
Remove print statement generating noise in the browser logs
2024-06-17 10:03:44 +02:00
Alejandro Sirgo Rica a637a958b0 templates: show oglive in client pills
Add oglive to each client pill in action/oglive using js.
This makes easier to have a global perspective of the client's
configuration.
2024-06-17 09:35:05 +02:00
Alejandro Sirgo Rica c26b96e0b0 ogcp: fix restricted user mode
Match user enabled scopes as numerical id instead of the scope
name.

Rename get_available_scopes to get_center_choices and add only
center data. This function returns the list of values used to
validate the data returned by the form (form.scopes.choices).

Fix scope filtering to only allow the scopes stored in the user
configuration. The filtering removes the scopes of type 'center'
from the scopes dictionary when the center id is not present in
the list of available scopes for the logged user.
2024-06-14 15:26:25 +02:00
Alejandro Sirgo Rica 3fa3888b84 forms: improve scopes field description in UserForm
Improve the information provided to the user related to scope
selection.
2024-06-14 15:26:25 +02:00
Alejandro Sirgo Rica c3a2dc028d forms: use checkboxes for scope selection in UserForm
Enable selection of multiple scopes in user/add and user/edit
for restricted users.
Replace quick form creation with an inline form definition in
add_user.html and edit_user.html
2024-06-14 15:26:23 +02:00
Alejandro Sirgo Rica a90f4207bd templates: remove dead code from edit_user.html
Remove the <script> block as the function digestUserFormPassword no
longer exists.
2024-06-14 15:26:09 +02:00
Alejandro Sirgo Rica c0440eba51 views: fix center/update validation with no selection
Check no center selection before missing server data.
Lack of checkbox selection will not carry server data as server
information is defined based on the components selected. Report
no center selection instead of lack server data in that case.
2024-06-14 09:25:36 +02:00
Alejandro Sirgo Rica 509d0e8dcf views: fix folder/update validation
Validate request parameters before accessing the dictionary values.
Prevent web backtrace.
2024-06-14 09:25:36 +02:00
Alejandro Sirgo Rica 5d9780e8d8 js: allow selection of multiple clients in scopes sidebar
Allow the selection of multiple client checkboxes if they belong
to the same room.
Each checkbox input in the DOM has a "data-parent-room" attribute
whose value is the value of the "name" attribute of its parent
room scope component.
To check if a checkbox is a client and a sibling of the one being
checked we check if "data-parent-room" is available for both nodes
and if they have the same value.
2024-06-14 09:25:36 +02:00
Alejandro Sirgo Rica 37ae1bc5a2 ogcp: add disclosure widget to sidebar
Add cache buster to soleta.css in base.html to have control over
cache expirity.
Bump soleta.css version to ensure browser does not used older (cached)
version.
Add CSS rules to show a disclosure widget in the sidebar.
Show center checkboxes as disabled in the commands view sidebar
for visual consistency.
Add class "collapsed" to the proper HTML components to keep a
proper state on page reload.
2024-06-14 09:25:17 +02:00
Alejandro Sirgo Rica 272a5067ad src: revisit sidebar context storage approach
Maintain selections made in scope sidebar after clicking an action
(ie. client add, room delete, etc.)
Use ids instead of names as the name html property is the same for
every room and center.
Call keepSelectedClients() in macros.html for both Scope Management
and Commands instead of only in Commands.
Add a "context" value to the checkbox id to separate scope and
commands values in local storage.
2024-06-14 09:24:39 +02:00
Alejandro Sirgo Rica 0153b2b13f js: uncheck parent folder when a child folder is unchecked
Improve selection logic to deselect the checkbox of a folder's
parent when the checkbox is unchecked.

Based on work from Javier Hernandez.
2024-06-14 09:23:44 +02:00
Alejandro Sirgo Rica 5533141ae9 js: remove unused variable in showSelectedClientsOnEvents
Remove declaration of 'container' variable as it is no longer
used in the function.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 3f16293fea js: show only clients in the scope pills
Exclude folders, centers servers and rooms from the scope pills so
only clients are shown.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica e7bafd7be9 templates: add missing center_update.html
Add html template for the route /action/center/update.
Finish the work started in commit 6ec26d16.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 12f74d5a4d views: remove duplicated validation errors
Remove flash() error messages after validate_elements().
validate_elements() defines error messages for min and max
element selection from sidebar.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 651589d690 templates: fix error report with multiple messages
Fix the definition of javascript code to generate a correct
message window for multiple error messages.
The error is cause by a redefinition of 'let bgclass' in multiple
lines when the html template receives multiple error messages.
Each iteration to generate the code for the error messages tries
to redefine the variable bgclass and it causes the js to fail.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica c2fd182fb6 views: allow scope server data in restricted user mode
Add the server scope during scope filtering for user accounts
with restricted scope access.
The HTML server scope component in the sidebar holds important
information as a hidden component. The removal of the server
scope also removes the respective HTML component in the web.
Missing server scopes result in a backtrace while trying to get
data such as server IP.
2024-06-13 17:38:44 +02:00
OpenGnSys Support Team 454999a895 views: skip non-200 OK requests to servers
Update multi_request() to skip non-200 OK requests to servers, otherwise
traceback is displayed while trying to access the json body.
2024-06-12 11:08:53 +02:00
Alejandro Sirgo Rica 95b2e20015 views: check cache presence in tiptorrent and unicast restore
Ensure a cache partition is present before trying to do a UNICAST
or TIPTORRENT image restore.
Inform the user about the lack of cache in such case.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 81c4c73498 views: enable client partitioning without cache
Remove the check that disables creating a client without cache.
This is the initial step towards unicast restoration support.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 26785aa88b templates: show boot mode in client pills
Add boot mode to each client pill in action/mode using js.
This makes easier to have a global perspective of the client's
configuration.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica b0858a7a62 templates: show image file table only if clients have a cache
Hide form table when the client's cache is empty and inform the
user about the selected clients not having images in cache.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 1ae3c1a840 views: exclude 00unknown and 10 from boot mode list
Ignore '00unknown', '10' from the list of boot modes in the form
shown in action/mode.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 7737a502ab views: use conventional for loop in boot mode selection
Use a conventional for loop instead of a oneliner.
Improve code readability.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica e136e77b56 views: show human readable boot modes
Add better visualization to the boot modes shown in /action/mode.
Use a dictinary to implement hardcoded human readble strings of
the form choices.
A better method will be implemented in the future.
2024-06-07 14:35:41 +02:00