Giter Club home page Giter Club logo

portal's People

Contributors

aidan-fitz avatar colbymorrison avatar dependabot[bot] avatar fordacious avatar ibeckermayer avatar jcolla-holla avatar kimdrosa avatar kyle-mcr avatar leon-i avatar prabhuinbarajan avatar rquartararo avatar therealnikhil avatar whaber avatar wjoe2046 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

portal's Issues

Activate / deactivate users

Org admins can activate and deactivate users

User listing shows a filter for active or inactive users, defaults to active users.

User setup emails the user

Standard user setup flow, creating the user emails them, they get to set up their own password, the admin does not have to enter a password.

Ability to delete users

As an Org Admin, I need the ability to delete user accounts of other users in the Permission Portal so that I can clean up the user store. We need to figure out a way to maintain some record or association with users if we want to have an audit trail. It may be implemented that "deleted accounts" stay in the system for auditability but are no longer visible to admins. Email uniqueness will need to be dealt with in this case as well.

On 5/15/20 we agreed to postpone this feature to after v3.

Organization settings screen

An organization admin should be able to see a page which shows the organization's name and contact phone number. The admin should be able to change the name and the phone number.

Permission Validation Screen

When a user logs in, they are presented with the permission validation screen for their organization. There are several possible designs for this screen, so don't spend too much time on this for v0.1 - the most basic version simply lists the potential permissions to be validated, and lets the user select one to validate.

Permissions that can be validated must be:

  • Unexpired (i.e. within the last 5 minutes)
  • Within the organization

POC modeling

Set up schema and database migrations necessary to configure the database and code to have the following models:

  • User
    • id, email address, name, password (hashed securely), org, is_admin, is_super_admin
  • Organization
    • id, name, slug (for urls), contact phone number
    • v0.2: logo, other public health info
  • Permission
    • id, expiration (default 5 minutes after creation), matching key, org

Login is broken on dev

When I try to log in on the dev branch ([email protected]) I run into the following error:

Error: [mobx-state-tree] Error while converting `{"uid":"[email protected]","isActive":true,"isAdmin":true,"uuid":"ISJlDOgBP7S4jYsBrinwqvaxsOU2","isSuperAdmin":false,"lastName":"Allen","prefix":"Mr.","firstName":"Barry","organizationID":"14gcjXheoe1ptjpn28ZN"}` to `(AnonymousModel | null)`:

    snapshot `{"uid":"[email protected]","isActive":true,"isAdmin":true,"uuid":"ISJlDOgBP7S4jYsBrinwqvaxsOU2","isSuperAdmin":false,"lastName":"Allen","prefix":"Mr.","firstName":"Barry","organizationID":"14gcjXheoe1ptjpn28ZN"}` is not assignable to type: `(AnonymousModel | null)` (No type is applicable for the union), expected an instance of `(AnonymousModel | null)` or a snapshot like `({ uid: string; isAdmin: boolean; isSuperAdmin: boolean; prefix: string; firstName: string; lastName: string; role: string; organizationID: string } | null?)` instead.
    at path "/role" value `undefined` is not assignable to type: `string` (Value is not a string).
    snapshot `{"uid":"[email protected]","isActive":true,"isAdmin":true,"uuid":"ISJlDOgBP7S4jYsBrinwqvaxsOU2","isSuperAdmin":false,"lastName":"Allen","prefix":"Mr.","firstName":"Barry","organizationID":"14gcjXheoe1ptjpn28ZN"}` is not assignable to type: `(AnonymousModel | null)` (Value is not a null), expected an instance of `(AnonymousModel | null)` or a snapshot like `({ uid: string; isAdmin: boolean; isSuperAdmin: boolean; prefix: string; firstName: string; lastName: string; role: string; organizationID: string } | null?)` instead.
    at fail$1 (http://localhost:8080/dist/app.bundle.js:65149:12)
    at typecheck (http://localhost:8080/dist/app.bundle.js:64796:15)
    at typecheckInternal (http://localhost:8080/dist/app.bundle.js:64782:9)
    at Array../node_modules/mobx-state-tree/dist/mobx-state-tree.module.js.ModelType.willChange (http://localhost:8080/dist/app.bundle.js:66852:13)
    at interceptChange (http://localhost:8080/dist/app.bundle.js:71527:37)
    at ObservableObjectAdministration../node_modules/mobx/lib/mobx.module.js.ObservableObjectAdministration.write (http://localhost:8080/dist/app.bundle.js:72541:26)
    at Object.set [as user] (http://localhost:8080/dist/app.bundle.js:72774:29)
    at http://localhost:8080/dist/app.bundle.js:2913:17
    at Generator.next (<anonymous>)
    at http://localhost:8080/dist/app.bundle.js:65586:51

Authenticated/Unauthenticated user flow

  • unauthenticated users must be redirected to login screen
  • authenticated users must be redirected to appropriate landing screen (manage teams if admin, code validations if not admin)
  • session data must be cached to check authentication status
  • if authenticated, must request user and organization data from firebase before rendering landing screen

Org login page

A login route with the organization's slug in it, show's the organization's name, logo, and allows login only through the organization's approved login methods, and for users of that organization.

Infrastructure: i18n

The entire frontend must be build with i18n in mind. Use a library, probably i18next unless you have experience with something you like better.

Metrics Reporting technical design

This would include reporting back data both from the Exposure Notification Dashboard and the Post Exposure Notification survey.

Need to figure out design and infrastructure to implement. Will require data storage, comms between End User apps and backend, etc.

Don't need UI for reporting in v3- this is tracked with a separate Github issue.

Covid Watch needs to be able to pull data out, but can require manual DB pull in v3.

I expect we can use this same infrastructure/design for the results of Post Exposure End User surveys

Needs security/privacy review.

Method to handle multiple organizations: tech design and architecture

As an End Users, I need a way to configure my End User app and associate it with a particular organization so that I can get the correct information in the app around things like who to contact for validation of my positive test result.

As an Org Admin, I need a way to make sure that the text and configurations that I provide are pushed down to users associated with my organization so that I'm trying to help everyone in my responsibility and not getting overloaded with requests from End Users outside my area of responsibility.

I expect this will require a technical design as this can have broad-reaching architectural implications depending how we implement.

After determining a technical design, we expect changed to be required in the End User app- Github issues have not yet been created for these changes.

https://www.notion.so/covidwatch/Permission-Portal-V3-Requirements-151b79bae1f846ae90155d5dcbb9f613#7796470d4a1a44c9adcbbd7f4f1c67c3

Workflow:
1 Covid Watch creates a new region (?)
2 We create the admin user(s) that can add other Contact Tracer users
3 Those admin user(s) add their Contact Tracer users (ideally we can add an excel file import function).

Login methods

An organization can be connected to one or more login methods, the methods that are allowed for a user to login to the Permission Portal. Examples:

Password
Magic Link
Google OAuth
A specific SAML provider

Allow logins for non admins

According to figma v2 flow, non-admins capabilities and restrictions:

  • should only be able to view code validations and settings screens.
  • should not be able to edit their role in settings

Basic login screen

This is likely to get replaced as we build either more complex login screens, or an integration with Okta or Auth0, but we need a basic login screen for the POC.

Footer overlaps with content on small screens

image

A quick fix would be to make the content scrollable and have the footer render a solid white background, such that it renders over the content, OR set the height of the content such that it stops at the height of the footer.

Permission Validation APIs

APIs that the Covid Watch User App can use:

  • Validation API
    • User App POSTS to to request a validation code
    • must include identifying information for the organization the user app is requesting permission from.
    • Returns a permission string/code and its id
  • Permission Received API
    • GET with a permission id
    • Returns true if permission id has been authorized by the Public Health User
    • Returns null if unknown
    • Post-POC, will likely return additional cryptographic info to allow validation

Method to handle multiple organizations

The front end is dependent on the technical design selected (#59). It could be as simple as providing a drop-down pick list in a "Settings" menu on the end user mobile app. We'd also need a way for different organizations to access their own versions/tenant of the Permission Portal.

Infrastructure: can deploy to AWS

For testing and development purposes, at least, we'll be using AWS. Set up staging and production servers. Should auto deploy from dev branch to staging.

User management screen

Organization admins should see a screen that lists all users within the organization and allows the user to create a new user.

Creating a new user should require the user to input a name, email address, and password, and should store appropriately. User creation in this version does not email the user, does not have a pending status, does not have any of the standard complexity to it.

Preview of End User App

As an Org Admin, I will be able to preview how text and settings I choose in the Permission Portal will impact the End User app look and feel before move those changes into full production for all End Users in my organization, so that I can make sure it works and looks as expected.

This could be a feature within the Permission Portal or a slight extension on the "testing mode" concept.

https://www.notion.so/covidwatch/Permission-Portal-V3-Requirements-151b79bae1f846ae90155d5dcbb9f613#ea8eb866d0c6401c8a6b6ad1b6540cde

Organization can set a logo

Org admins can set a logo for the organization on the settings screen. Logo shows up on the organization login screen

Reporting for Exposure Notification Dashboard

Expose aggregate data from End Users in a single organization in privacy protecting fashion within Permission Portal

Should build on what was delivered in v2

Also requires backend work and technical design to figure out storage of data, and how we initially report (can be just pulling from the DB initially)

Also requires security review for privacy concerns.

https://www.notion.so/covidwatch/Permission-Portal-V3-Requirements-151b79bae1f846ae90155d5dcbb9f613#fdd9d198d23a44c8bb4e6b33e1859ceb

Tab Navigation

If a user is an organization admin, they should have navigation that lets them choose between the permission validation screen, the user management screen, and the organization settings screen. Non-organization admins should only see the permission validation screen and my settings screen (should not be able to change roles here).

Super admin organization management screen

Super admins, when they login:

  • See a list of organizations.
  • Can create an organization
  • Can create an admin for an organization

Also Super admins should only see a super admin organization listing and management screen.

Test Mode

"Test mode" setting so that organizations can try out the service before committing to a full production deployment

More requirements detailed here

Implementation details TBD

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.