twenty/packages/twenty-chrome-extension
Aditya Pimpalkar c63ee519ea
feat: oauth for chrome extension (#4870)
Previously we had to create a separate API key to give access to chrome
extension so we can make calls to the DB. This PR includes logic to
initiate a oauth flow with PKCE method which redirects to the
`Authorise` screen to give access to server tokens.

Implemented in this PR- 
1. make `redirectUrl` a non-nullable parameter 
2. Add `NODE_ENV` to environment variable service
3. new env variable `CHROME_EXTENSION_REDIRECT_URL` on server side
4. strict checks for redirectUrl
5. try catch blocks on utils db query methods
6. refactor Apollo Client to handle `unauthorized` condition
7. input field to enter server url (for self-hosting)
8. state to show user if its already connected
9. show error if oauth flow is cancelled by user

Follow up PR -
Renew token logic

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-04-24 11:45:16 +02:00
..
public feat: iframe addition (chrome-extension) (#4418) 2024-03-15 16:36:53 +01:00
src feat: oauth for chrome extension (#4870) 2024-04-24 11:45:16 +02:00
.env.example feat: oauth for chrome extension (#4870) 2024-04-24 11:45:16 +02:00
.eslintrc-ci.cjs chore: enable no-console eslint rule for tests and stories (#4816) 2024-04-04 18:36:39 +02:00
.eslintrc.cjs chore: use common eslint config for most packages (#4705) 2024-04-04 12:05:26 +02:00
.gitignore Closes #2413 - Building a chrome extension for twenty to store person/company data into a workspace. (#3430) 2024-02-12 12:30:23 +01:00
codegen.ts feat: check if company/person saved (chrome-extension) (#4280) 2024-03-26 14:37:36 +01:00
loading.html feat: iframe addition (chrome-extension) (#4418) 2024-03-15 16:36:53 +01:00
options.html Closes #2413 - Building a chrome extension for twenty to store person/company data into a workspace. (#3430) 2024-02-12 12:30:23 +01:00
package.json feat: oauth for chrome extension (#4870) 2024-04-24 11:45:16 +02:00
README.md fix: fix root start script (#5032) 2024-04-19 18:28:02 +02:00
tsconfig.app.json fix: "Add to Twenty" button render fix (chrome-extension) (#5048) 2024-04-19 18:13:53 +02:00
tsconfig.json feat: check if company/person saved (chrome-extension) (#4280) 2024-03-26 14:37:36 +01:00
tsconfig.spec.json Add linter to Chrome Extension (#4044). (#4174) 2024-02-25 17:32:08 +01:00
vite.config.ts feat: check if company/person saved (chrome-extension) (#4280) 2024-03-26 14:37:36 +01:00

Twenty Chrome Extension.

This extension allows you to save company and people information to your twenty workspace directly from LinkedIn.

To install the extension in development mode with hmr (hot module reload), follow these steps.

  • STEP 1: Clone the repository and run yarn install in the root directory.

  • STEP 2: Once the dependencies installation succeeds, create a file with env variables by executing the following command in the root directory.

cp ./packages/twenty-chrome-extension/.env.example ./packages/twenty-chrome-extension/.env
  • STEP 3 (optional): Update values of the environment variables to match those of your instance for twenty-front and twenty-server. If you want to work on your local machine with the default setup from Twenty Docs, replace everything in the .env file with the following.
VITE_SERVER_BASE_URL=http://localhost:3000
VITE_FRONT_BASE_URL=http://localhost:3001
  • STEP 4: Now, execute the following command in the root directory to start up the development server on Port 3002. This will create a dist folder in twenty-chrome-extension.
npx nx start twenty-chrome-extension
  • STEP 5: Open Google Chrome and head to the extensions page by typing chrome://extensions in the address bar.

  • STEP 6: Turn on the Developer mode from the top-right corner and click Load unpacked.

  • STEP 7: Select the dist folder from twenty-chrome-extension.

  • STEP 8: This opens up the options page, where you must enter your API key.

  • STEP 9: Reload any LinkedIn page that you opened before installing the extension for seamless experience.

  • STEP 10: Visit any individual or company profile on LinkedIn and click the Add to Twenty button to test.

To install the extension in production mode without hmr (hot module reload), replace the command in STEP FOUR with npx nx build twenty-chrome-extension. You may or may not want to execute STEP THREE based on your requirements.