Giter VIP home page Giter VIP logo

freeipa-webui's Introduction

Gating tests

FreeIPA Web UI

New version of the web application for administration of FreeIPA built using React and PatternFly 4.

You can read more about the plans here.

Mock-ups

Note: these mockups are for general direction we're taking the Web UI. Some finer details and interactions will be worked out as we develop the application.

Mockup of the Vertical navigation Mockup of the Delete dialog Mockup of how scrolling affects tables Mockup of a user settings pages

Development environment

This project relies on Vagrant to set-up a virtual machine with FreeIPA installed and configured.

  1. Install requirements

Although these instructions target Fedora as host, any OS with Vagrant can be used, sshfs and libvirt are the preffered options, if you plan to use a different distro, please update Vagrantfile accordingly.

$ sudo dnf install vagrant vagrant-libvirt vagrant-sshfs
  1. Clone this repository

  2. Start and provision the guest virtual machine: vagrant up

  3. Add guest machine's IP address to your /etc/hosts pointing to its hostname, e.g:

192.168.122.5 server.ipa.demo

You can get the VM ip for the running VM by:

vagrant ssh-config | grep HostName | awk '{print $2}'

At this point you can access your live instance at https://server.ipa.demo/ipa/ui/. However, you still need to configure your front-end environment, it's up to you to choose between your host or guest machine.

If you decide to use your guest machine, just ssh into it, go to the synced folder:

$ vagrant ssh
$ cd /usr/src/freeipa-webui/

Now you can install the project's dependencies:

$ npm install

To build (and watch the project for changes), run:

$ npm run start

You can serve the project using the following command:

$ npm run serve

You can also build and serve the project for production using the following command:

$ npm run build

Now your dev environment is ready, you can do changes and see them at: https://server.ipa.demo/ipa/modern_ui/

Considerations

  • Live reload is currently not available.

Testing

TBD

License

FreeIPA Web UI is licensed under the GPLv3+ as FreeIPA.

freeipa-webui's People

Contributors

amananand20 avatar avisiedo avatar b3lix avatar carma12 avatar faisalhs51 avatar miskopo avatar mreynolds389 avatar netoarmando avatar pvoborni avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freeipa-webui's Issues

Add the 'Active users' main page

The project needs the following content:

  • The Users > 'Active users' main page
  • The action buttons contained on that page ('Add', 'Delete', 'Enable', and 'Disable').
  • The modals on that page.

[CL] Adapt new user's data type

Goal:

  • Change and adapt the user's components to the new user data type.

Acceptance criteria:

  • The user components should use the newly-created data type and keep its functionality.

[UI] Change 'Stage users' action buttons

Goal:

  • Adapt the action buttons in order to match with the ones in the current WebUI.

Acceptance Criteria:

  • 'Stage users' main page should have the following action buttons: 'Refresh', 'Delete', 'Add', and 'Activate'.
  • As this is UI-based, there is no need to implement the functionality yet (this will be implemented in other PR)

[CL] Adapt the ‘Preserved users’ main page

Goal:

  • Adapt the 'Preserved users' main page to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The list of users should be retrieved and shown in the main table.
  • The bulk selector and pagination components should keep its functionality.

Add the 'Preserved users' > 'Settings' section

The project needs the following content:

  • The Users > 'Preserved users' > 'Settings' section
  • The action buttons contained on that page for each field. Not including the 'Refresh', 'Revert', 'Save', and the ones in the kebab selector (those will be implemented in a separate task/PR).

'Hosts' > 'Settings' action buttons

The project needs the following functionality:

  • 'Settings' action buttons: 'Refresh', 'Revert', 'Save', and the ones contained in the kebab selector.
  • Ideally, field validation. If this only task is more complex than expected, then this can be implemented in another task / PR.

Optimize the 'PaginationPrep' components

The PaginationPrep component should be unique to manage the pagination data for all entity types.

Before:

  • For 'users' --> PaginationUsersPrep
  • For 'hosts' --> PaginationHostsPrep
  • For 'services' --> PaginationServicesPrep

Goal:

  • For 'users', 'hosts', 'services', and more --> PaginationPrep

[RFE] Allow management of OTP token managers from web UI

  • Description of the request:
    To set which users and groups can modify an OTP token from the IPA web UI. This is related to BZ#1990576

  • Business requirements:
    Not have to assign management users and groups through the command line, they would prefer to handle that from the web UI due to the fact they run MacOS in their company and additionally would prefer to not have to give access to the IPA command line as much as possible.

  • Functional requirements:
    From the IPA web UI, they would like to have an option when creating the token to specify which users and/or groups are assigned as the token manager, and additionally would like to use the existing token manager tab (https://idm.example.com/ipa/ui/#/e/otptoken/managedby_user/) to be able to add and remove token managers.

  • How to confirm the requirement is successfully implemented?:
    It can be tested in an example environment by being able to assign a test user and a test group as managers for a token assigned to another user.

[CL] Adapt ‘Preserved users’ > ‘Settings’ page

Goal:

  • Adapt the 'Preserved users' > 'Settings' to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • Implement action button functionality for all of the sections of 'Settings'.
  • The specific user data should be retrieved and shown in the different UI elements. The reading and writing access should be managed by the already retrieved environmental data.

[CL] Adapt ‘Active users’ > ‘Settings’ page

Goal:

  • Adapt the 'Active users' > 'Settings' to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • Implement action button functionality for all of the sections of 'Settings'.
  • The specific user data should be retrieved and shown in the different UI elements. The reading and writing access should be managed by the already retrieved environmental data.

[CL] Adapt ‘Active users’ action buttons

Goal:

  • Adapt the 'Active users' action buttons to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The action buttons functionality should be implemented to be used with the wrapper: 'refresh', 'delete', 'add', 'disable', and 'enable'.

RPM package

Currently, CI and dev environment depend on a manually added entry to Apache settings to serve the assets.

Our goal is to deliver freeipa-webui as a RPM package that can be installed alongside freeipa-server (and others).

The freeipa-server-webui package can be installed:

  • Before running ipa-server-install; or,
  • On an already deployed server.

With that in mind two scenarios are possible:

  • (Requires integration with freeipa) Running ipa-server-install with freeipa-webui present auto-configures Apache.
  • System administror runs ipa-webui-install to configure Apache (in an server with FreeIPA pre-installed)

In any case, after installing and configuring Apachae a server running FreeIPA will also respond to HTTP requests pointing to https://[IPA_SERVER]/ipa/modern_ui.

[CL] Adapt the ‘Active users’ main page

Goal:

  • Adapt the 'Active users' main page to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The list of users should be retrieved and shown in the main table.
  • The bulk selector and pagination components should keep their functionality.
  • The calls to get the initial environmental data can be made if needed.

[CL] Adapt ‘Stage users’ action buttons

Goal:

  • Adapt the 'Stage users' action buttons to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The action buttons functionality should be implemented to be used with the wrapper: 'refresh', 'delete', 'add', and 'activate'.
  • The functionality of any UI components can be enhanced if needed.

Improve accessibility in WebUI

Considering that some accessibility aspects are already covered by the PatternFly4 library, this issue is meant to review other accessibility aspects that might be not covered by the library itself and/or depend on the application context (e.g., OUIA, inconsistent keyboard navigation, readability, etc).

[RFE] List the ACME role in webui

  • Description of problem:
    List the ACME role in WebUI and its status.
    It would be good if the $ipa server-role command display the acme role too.

  • How reproducible:
    NA

  • Expected results:
    ACME role displayed in WebUI.

Add the 'Services' > 'Settings' section

The project needs the following content:

  • The 'Services' > 'Settings' section
  • The action buttons contained on that page for each field. Not including the 'Refresh', 'Revert', 'Save', and the ones in the kebab selector (those will be implemented in a separate task/PR).

Add the 'Hosts' > 'Settings' section

The project needs the following content:

  • The 'Hosts' > 'Settings' section
  • The action buttons contained on that page for each field. Not including the 'Refresh', 'Revert', 'Save', and the ones in the kebab selector (those will be implemented in a separate task/PR).

Add the 'Stage users' main page

The project needs the following content:

  • The Users > 'Stage users' main page
  • The action buttons contained on that page ('Add', 'Delete', 'Enable', and 'Disable').
  • The modals on that page.

'Users' > 'Settings' action buttons

The project needs the following functionality:

  • 'Settings' action buttons: 'Refresh', 'Revert', 'Save', and the ones contained in the kebab selector.
  • Ideally, field validation. If this only task is more complex than expected, then this can be implemented in another task / PR.

'Hosts' page

The project needs the following content:

  • The 'Hosts' main page with some action button functionality.
  • The 'Settings' section. With consideration of splitting this specific part into another issue if necessary.

[CL] Adapt ‘Preserved users’ action buttons

Goal:

  • Adapt the 'Preserved users' action buttons to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The action buttons functionality should be implemented to be used with the wrapper: 'refresh', 'delete', 'restore', and 'stage'.
  • The functionality of any UI components can be enhanced if needed.

[CL] Create RPC wrapper for rtk-query

Goal:

  • Implement a wrapper using the RTK Query library for consuming the IPA commands via JSON-RPC in the new WebUI.

Acceptance Criteria:

  • Implement the solution using the RTK Query library and refer to its documentation.
  • Define the endpoints in the wrapper for making the API calls.
  • Each endpoint should refer to a different type of API call determined by the number of commands called (simple | batch) and the type of endpoint (Query | Mutation).
  • The API calls should cover specific IPA commands, but those do not need to be explicitly specified in the endpoint itself (only when they will be consumed).
  • If needed, use endpoints for defining sequential API calls (that need to be executed in a specific order, see example here) or other endpoints that complete further functionality not covered by the already defined endpoints.

[CL] Adapt ‘Stage users’ > ‘Settings’ page

Goal:

  • Adapt the 'Stage users' > 'Settings' to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • Implement action button functionality for all of the sections of 'Settings'.
  • The specific user data should be retrieved and shown in the different UI elements. The reading and writing access should be managed by the already retrieved environmental data.

[RFE] IdM WebUI allows modifying Password Expiration field

  • Description of problem:
    Request enhancement to WebUI to allow modifying the Password Expiration field.

  • Provide WebUI action for the below commands:
    ipa user-mod <username> --password-expiration=<date> <-- set
    ipa user-mod <username> --password-expiration= <-- unset

  • How reproducible:
    Always

  • Steps to Reproduce:

    1. Login to WebUI
    2. On the "User" tab, click on a user
    3. Account Settings -> Password Expiration
  • Actual results:
    Password Expiration is a displaying-only property.

  • Expected results:
    Password Expiration is an input text field allowing the admin to update.

Create new component `Kerberos Principal Alias`

As the Kerberos Principal Alias' logic is been used in several pages (e.g., Services, Hosts, Users), this can be contained in a new component.

The component can possibly have also a parent, more general component - MultivaluedTextInput. That might be usable in other places as well.

Add 'Services' page

The project needs the following content:

  • The 'Services' main page with some action button functionality.
  • The 'Settings' section. With consideration of splitting this specific part into another issue if necessary.

[CL] Adapt the ‘Stage users’ main page

Goal:

  • Adapt the 'Stage users' main page to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • The list of users should be retrieved and shown in the main table.
  • The bulk selector and pagination components should keep its functionality.
  • The calls to get the initial environmental data can be made if needed.

[CL] Adapt ‘Active users’ > ‘Is a member of’ page

Goal:

  • Adapt the 'Active users' > 'Is a member of' to use the communication layer wrapper.

Acceptance criteria:

  • The wrapper should be used to create and perform the API calls needed in each case.
  • Each group data list should be shown in its corresponding table.
  • The functionality of the action buttons should be implemented.
  • The functionality of any UI components can be enhanced if needed.

Search input functionality

The Search input element needs to filter data from the following tables:

  • 'Active users' page
  • 'Is a member of' section tables
  • 'Stage users' page
  • 'Preserved users' page

[RFE] Identity Management - WebUI - Ability to set columns, page length, and export data

  • Description of the request:
    It would be helpful to be able to control columns listed for resources in the WebUI and control the number of records displayed on a single page. It would also be helpful to be able to export this data to a CSV from the WebUI.

  • Reason behind this RFE:
    Use Case:

    • To be able to see lists of active users and what they have access to. If they need a list of all of our users they have to page through them in the UI. We do know that CLI tools or LDAP browsing clients are an option, but these are generally non-technical users.
    • Allow auditors to view and export relevant data.
  • Functional requirements here:
    Provide a mechanism to choose which columns are displayed. Provide an export to CSV functionality.

  • How Red Hat and the customer can test to confirm the requirement is successfully implemented?:

    • Confirm you can choose the columns displayed.
    • Confirm export is successful.

Add the 'Active users' > 'Settings' section

The project needs the following content:

  • The Users > 'Active users' > 'Settings' section
  • The action buttons contained on that page for each field. Not including the 'Refresh', 'Revert', 'Save', and the ones in the kebab selector (those will be implemented in a separate task/PR).

Add the 'Preserved users' main page

The project needs the following content:

  • The Users > 'Preserved users' main page
  • The action buttons contained on that page ('Add', 'Delete', 'Enable', and 'Disable').
  • The modals on that page.

[UI] Change 'Preserved users' action buttons

Goal:

  • Adapt the action buttons in order to match with the ones in the current WebUI.

Acceptance Criteria:

  • 'Preserved users' main page should have the following action buttons: 'Refresh', 'Delete', 'Restore', and 'Stage'.
  • As this is UI-based, there is no need to implement the functionality yet (this will be implemented in other PR).

Add the 'Stage users' > 'Settings' section

The project needs the following content:

  • The Users > 'Stage users' > 'Settings' section
  • The action buttons contained on that page for each field. Not including the 'Refresh', 'Revert', 'Save', and the ones in the kebab selector (those will be implemented in a separate task/PR).

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.