Jan Keromnes f7101c5aed
Implement user account verification with LinkedIn during onboarding (#17074)
* Implement user account verification with LinkedIn during onboarding

* updating connect with linked-in banner

* removing unused imports

* Store token, fix binding

* Refactor LinkedInToken to LinkedInProfile

* Actually write the LinkedIn secret to the server config

* Fetch LinkedIn user profile and email address

* Add creationTime column to d_b_linked_in_profile

* Add more debug logging

* Fix LinkedIn API calls, mount LinkedInProfileDB

* Also bind LinkedInProfileDB

* Add LinkedIn scope r_liteprofile

* Enhance LinkedIn profile retrieval, store the profile, ensure uniqueness

* Align with UX spec and complete onboarding flow

* Prevent the LinkedIn button from auto-submitting the onboarding form

* Address nits (LinkedInService to /src and minor spacing)

---------

Co-authored-by: Brad Harris <bmharris@gmail.com>
2023-04-12 16:39:52 +02:00
..
2023-02-10 14:19:15 +01:00
2023-04-12 10:03:52 +02:00
2022-12-08 13:05:19 -03:00
2022-12-08 13:05:19 -03:00
2022-12-08 13:05:19 -03:00
2022-12-08 13:05:19 -03:00
2020-08-25 09:25:15 +00:00
2020-08-25 09:25:15 +00:00
2023-03-24 10:51:16 +01:00
2022-12-08 13:05:19 -03:00
2022-12-08 13:05:19 -03:00

Gitpod-db

Contains all the database related functionality, implemented using typeorm.

Working on gitpod-protocol component

When you are making changes to gitpod-protocol component, make sure to run yarn build in gitpod-protocol folder to make sure your changes will be rebuild. Also consider running yarn watch so that any changes are rebuilt in realtime.

Adding a new table

  1. Create a migration - use the baseline as an exemplar
  2. Create a new entity that implements the requisite interface or extend an existing entity as required - see db-user.ts
  3. If it is a new table, create the matching injectable ORM implementation and interface (if required) - see user-db-impl.ts and user-db.ts. Otherwise extend the existing interface and implementation as required.
  4. Add the injectable implementation to the DB container module, binding the interface and implementation as appropriate, otherwise it will not be instantiated correctly e.g.
    bind(TypeORMUserDBImpl).toSelf().inSingletonScope();
    bind(UserDB).toService(TypeORMUserDBImpl);
  1. Add the new ORM as an injected component where required e.g. in user-controller.ts
    @inject(UserDB) protected readonly userDb: UserDB;