:ukraine: A self-hosted app for keeping track of employee wellbeing and dislocation during the Russo-Ukrainian war, with an interactive map.

Overview

Logo

Helping organizations stay together and help their members in times of disaster

On February 24th, 2022, the lives of the entire Ukrainian nation were disrupted and thrown into uncertainty because of the unprovoked, illegal invasion by the Russian Federation. As a result, millions have been dislocated and are at risk within war zones throughout Ukraine.

Ukrainian businesses have become key in the resistance – providing aid to employees, coordinating humanitarian aid nation-wide, and contributing to anti-war initiatives, all while trying to keep their organizations viable.

Together App aims to help organizations be tight-knit communities for their members. It’s a simple way to know where your people are, to know when and how to help each other, and to have moments of real human connection when they are most needed.

After all, we are in this together.

Deploying Together App · Customization · Open a GitHub Issue


Keep track of member well-being with daily check-ins.

In times of crisis, people move around quickly, connection gets disrupted, and safety conditions change rapidly. Every day, the Together App Slack bot asks members to check in – providing information about their whereabouts, wellbeing, and their ability to contribute to team efforts.

The check-in only takes seconds but it provides a clear, actionable overview of organization members for the wellbeing stakeholders. Nobody is left behind and everybody is on the same page.

Daily Check Ins


Stay secure – physically and digitally.

Together App’s check-in requests are sent to all members via its Slack bot. We use Slack because it’s a trusted and reachable tool for companies worldwide.

Additionally, the application never stores a member’s exact location to avoid collecting sensitive data like a refugee camp or bomb shelter in a city under attack. It stores only the coordinates of the actual city in which the member is located.

These protective measures are crucial now that many Ukrainian companies are withstanding constant cyber threats coming from Russia. With Together App, your company’s and your people’s data is safe.

Daily Check Ins


Know where your people are and coordinate with an interactive map.

In addition to providing a dashboard accessible for wellbeing stakeholders, Together App puts every team member on an interactive map. Using the map, members can see who is staying in the same city, meet up, and help each other.

The map also became crucial for coordinating the logistics of humanitarian efforts and connecting members worldwide. Plus, it just feels good to see everybody at the same time, on the same map.

Organization Map


  What Can Together App Do?

  • Automatically request wellbeing check-ins from organization members on a regular basis.
  • Allow members to check in other peers who may not have connectivity if they know their current status.
  • Repeat the previous wellbeing check-in in two taps if conditions haven't changed.
  • Monitor member wellbeing, sending notifications to wellbeing stakeholders (HR, direct managers, etc.) when a member is at risk.
  • Keep track of who has been mobilized.
  • Display check-in data for members in its thorough dashboard.
  • Allow you to control who can see what data in the dashboard.
  • Assist in building reports and queries based on check-in data for assisting members (i.e., "show me all of the members in Mykolaiv to help me coordinate an evacuation").
  • Display an interactive map of an organization's members, allowing members to find help, community, and support in their current location.
  • It respects privacy – members can opt-out of being displayed on the map, be exempt from checking in, and Together App will never save the exact location of any member. Although it uses browser geolocation to make the check-in process fast and effortless, only the coordinates of the member's city are stored in the database.

💻   Usage

Together App has two key components:

  • The Together App Slack bot.
  • The Together App dashboard.

The Slack Bot

Aside from automatically requesting check-ins, members can proactively check in using the /together slash command and the Together App global shortcuts.

The Dashboard

Upon deploying your self-hosted version of Together App, a dashboard will be available on the domain, where you and other organization members can view members and their check-in data, as well as the interactive map.

Actual check-in data is limited to Together App administrators (which can be added in the dashboard), while the map is visible to all members of the organization who have access through your SSO or OAuth provider.


💾   Deploying Together App

Below is an in-depth guide on how you can deploy your own instance of Together App for your organization. This is intended to take no longer than an hour.

Before You Start

The following guide assumes that your organization already has:

  • A Slack workspace.
  • A single sign on (SSO) or OAuth provider (Okta, Google, etc.).

If you do not, you will need to set these up in order to use Together App.

This guide will walk you through deploying Together App on Heroku. However, almost all the steps here are globally true for and easily applied to any hosting.

Configure The Environment

Below is the list of required environment variables. Depending on where you are deploying Together App, these may need to be set either in the .env file or elsewhere (i.e. the Heroku dashboard).

This deployment guide will walk you through populating the values of the environment variables and will explain which each is used for.

NODE_ENV=
PORT=
HOST=
DATABASE_URL=
SLACK_TOGETHER_APP_TOKEN=
SLACK_TOGETHER_APP_SIGNING_SECRET=
SLACK_MONITORING_CHANNEL_ID=
SLACK_ORGANIZATION_CHANNEL_ID=
SLACK_WORKSPACE_ID=
TOGETHER_ADMINISTRATOR_SLACK_USER_ID=
GOOGLE_GEOCODING_API_TOKEN=
GOOGLE_PLACES_API_TOKEN=
MAPBOX_MAP_TOKEN=
OKTA_CLIENT_ID=
OKTA_CLIENT_SECRET=
OKTA_ISSUER=
NEXTAUTH_URL=
NEXTAUTH_SECRET=
ALLOWED_REFERRER_ID=
JOBS_API_TOKEN=

Create a Heroku Application

The easiest way to get started with Together App is to deploy it to Heroku.

  • Create a new Heroku application according to the documentation.
  • Since Together App relies on Slack, due to response time allowances for Slack's events, it is recommended that you purchase a Hobby plan, so that the app does not sleep.
  • Head to the Settings tab and, if needed, set up your custom domain (SSL and a Heroku domain are provided for free).
  • There, in the Settings tab, click Reveal Config Vars to set up the environment. This is where you'll be setting all of the environment variables.
  • Set the HOST and NEXTAUTH_URL to your custom or Heroku domain.
  • Set the NODE_ENV to production.
  • Make sure that you do not set the PORT environment variable, as Heroku application ports are dynamic.

Set Up PostgreSQL

Together App requires a PostgreSQL database.

  • If you are working with Heroku, provision the Heroku Postgres add-on.
  • Once you do that, the DATABASE_URL environment variable is set for you.
  • However, if you are not using Heroku Postgres, you will need to set the DATABASE_URL environment variable.

Create The Slack Application

Together App integrates with Slack. It is there that your organization's members will receive check in requests and where member wellbeing stakeholders will receive notifications. The reasoning behind using Slack is that it is the most popular collaboration tool for organizations and is generally a very safe, trusted environment, which is important in light of currently heightened worries of phishing and other cyber attacks.

To create your Slack application:

  • Copy the YML contents below to your clipboard (note the this is also available in the manifest.yml file in the slack folder.
  • Make sure you replace the {{host}} variable with the domain on which you'll be hosting Together App.
  • Follow the instructions laid out by Slack to install an app via an app manifest.
  • Go to the app's Basic Information page, scroll to the bottom, and upload the app's icon. You can find the default Together App icon in the slack folder.
  • Here, on the Basic Information page, click Install to Workspace.
  • Once it has been installed, copy the Signing Secret from the app's Basic Information page to the SLACK_TOGETHER_APP_SIGNING_SECRET.
  • Go to the OAuth & Permissions page and copy the Bot User OAuth Token to the SLACK_TOGETHER_APP_TOKEN environment variable.

⚠️ Note that Together App has been created to work in a single Slack workspace. If your organization is on the Enterprise Grid, you will need to create an instance of Together App for each workspace.

display_information:
  name: Together App
  description: An app to help us stay together during these tough times.
  background_color: "#36373d"
features:
  bot_user:
    display_name: Together App
    always_online: true
  shortcuts:
    - name: Check In Someone Else
      type: global
      callback_id: renderCheckInOtherMemberConfirmation
      description: Check in another member of your organization with Together App.
    - name: Check In
      type: global
      callback_id: renderCheckInSelfConfirmation
      description: Check in using Together App.
    - name: Repeat Last Check In
      type: global
      callback_id: renderRepeatCheckInConfirmation
      description: Repeat your last check in with Together App.
  slash_commands:
    - command: /together
      url: https://{{host}}/api/slack/command
      description: Call the Together App menu to check in.
      should_escape: false
oauth_config:
  scopes:
    bot:
      - commands
      - users:read
      - users:read.email
      - chat:write
settings:
  interactivity:
    is_enabled: true
    request_url: https://{{host}}/api/slack/action
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false

Configure Other Slack-Related Environment Variables

There is some other information from your Slack workspace that Together App needs in order to function.

Namely:

  • The Team ID of your Slack workspace.
  • The Channel ID of an organization-wide channel where check in requests will be sent.
  • The Channel ID of a channel where Together App can send notifications to member wellbeing stakeholders.
  • The User ID of the initial member who will have administrator privileges in Together App.

To get this information:

  • Install the Slack Developer Tools application from the Slack App Directory.
  • Inside of the Slack client, open the Shortcuts Menu, and search for and click Display IDs.
  • In the modal that opens, copy the value of Your Workspace ID to the SLACK_WORKSPACE_ID environment variable.
  • In the same modal, find the member who will have initial administrator privileges and copy their ID to the TOGETHER_ADMINISTRATOR_SLACK_USER_ID environment variable.
  • In the same modal, find the channel to which Together App should send organizational-wide check in requests and copy the ID to the SLACK_ORGANIZATION_CHANNEL_ID environment variable.
  • Do the same to find the channel ID of the channel to which Together App can send notifications to member wellbeing stakeholders and copy the ID to the SLACK_MONITORING_CHANNEL_ID environment variable.

⚠️ Make sure that Together App has been added to those channels.

Generate Google API Tokens

Together App uses two Google APIs to make the check in process as easy as possible – the Geocoding API and the Places API. You need to create API tokens for both.

Follow these steps:

  • In order for Together App to work, you need to make sure that billing has been turned on and a payment method has been added. You can learn more about in this documentation.
  • Create an API key for the Geocoding API:
    • Create an API token.
    • In the API restrictions section, restrict the token to only the Geocoding API.
    • If you decide to further restrict the token using the Application Restrictions, note that this token is used on the back end, so using the HTTP Referrer restriction is not applicable. If you wish to restrict it for security reasons and you have a static IP address, you can restrict it by IP.
  • Copy the Geocoding API key to the GOOGLE_GEOCODING_API_TOKEN environment variable.
  • Create an API key for the Places API:
    • Create an API token.
    • In the API restrictions section, restrict the token to include both the Places API and the Maps JavaScript API.
    • Since this API key is exposed to the client, you need to restrict it by HTTP Referrer in the Application Restrictions section.
  • Copy the Places API key to the GOOGLE_PLACES_API_TOKEN environment variable.

⚠️ If you run into issues with detecting location while checking in, please go through the outlined restrictions above and double check that your tokens comply.

Generate a MapBox Public Key

Together App uses MapBox to render the interactive map of an organization's members.

Follow these steps:

  • Create an access token (that starts with pk) for MapBox according to their documentation.
  • Since the access token is exposed to the client, you'll want to restrict it by URL.
  • Copy the MapBox access token to the MAPBOX_MAP_TOKEN environment variable.

Setting Up SSO or OAuth

Out of the box, Together App supports signing in with Okta as the main SSO provider. However, the app is built with NextJS, and the package NextAuth supports multiple SSO and OAuth providers.

In this section are the instructions for setting up Okta authentication. View the section on customizations to learn how to set up a custom provider.

To set up Okta authentication:

  • Create an OIDC custom app integration for Together App.
  • Set the redirect URL for the app to be https://{{host}}/api/auth/callback/okta.
  • Find your app's credentials, and copy in the Client ID to the OKTA_CLIENT_ID environment variable.
  • Copy the Client Secret to the OKTA_CLIENT_SECRET environment variable.
  • Copy your organization's Okta domain to the OKTA_ISSUER environment variable.
  • Provision access to your organization's members as needed. Note that priveleges are handled inside of the Together App and managed in the dashboard – not through Okta groups.

Setting Secrets

There are additional secrets that are needed for Together App to function. Each one is a random string. You can use key generators to create them:

  • NEXTAUTH_SECRET – a random string used to hash tokens, sign/encrypt cookies and generate cryptographic keys.
  • ALLOWED_REFERRER_ID – random string used to verify whether or not to render the check in page when redirected from Slack (other protection methods are in place, too).
  • JOBS_API_TOKEN – a random string used to verify whether or not a request to the https://{{host}}/api/jobs/* endpoints are valid. These endpoints are used for scheduled jobs and do not return any data.

Turning On Heroku Auto Deploys

Now that the environment has been populated, you're ready to deploy.

First, we need to deploy the code to the Heroku app:

  • Head over to the Deploy tab of your Heroku app.
  • Configure GitHub integration.
  • Select the forked repository in your GitHub account.
  • Click Deploy branch.
  • At this point, you will also want to install the Heroku CLI.

To view the build and deploy progress, open your Terminal and type in:

heroku logs -t -a {{heroku-app-name}}

Running Migrations

Before you can use Together App, you'll need to initiate the database scheme and seed data.

First, open the command line within your Heroku application:

heroku run bash -a {{heroku-app-name}}

Then, to update the schema, run the following command inside the application:

npm run migrate:production

Then, you need to seed the data. Please note that your server needs to be up and running before running this command:

npm run initialize

This command syncs the database with your Slack workspace and provides administrator permissions to the member whose Slack ID was set in the TOGETHER_ADMINISTRATOR_SLACK_USER_ID environment variable.

Setting Up Scheduled Jobs

Together App relies on scheduled jobs for syncing users with your Slack workspace, sending check in requests, reminding members to check in, and notifying stakeholders about members who haven't checked in recently.

These are invoked calling the following scripts:

  • npm run sync – this syncs the Together App member base with your Slack workspace, importing newly added members and updating those with status changes (deleted, restricted, etc.).
  • npm run request – this sends a check-in request message to the organization-wide channel and as a direct message to each member.
  • npm run remind – this sends a check in reminder for members who haven't checked within a certain number of hours. This defaults to 24 hours, but is configurable.
  • npm run notify – this sends a notification to the monitoring channel for members who haven't checked in within a certain number of hours. This defaults to 24 hours, but is configurable.

To set these up on Heroku:

  • For the app you created above, provision the free Heroku Scheduler add-on.
  • Navigate to your app's Overview tab, and go to the Heroku Scheduler settings.
  • Click Add Job.
  • Choose a time interval and paste in the command from above.

Note that it is up to you how often and when to call these scripts. You might want to just request check-ins once per week. Aside from that, there are other customizations available, too.

An example algorithm for daily check-ins might be:

  • 8:00 AM npm run sync
  • 11:00 AM npm run request
  • 14:00 PM npm run remind
  • 16:00 PM npm run notify
  • 11:00 PM npm run sync

This will:

  • Keep your member database up to date.
  • Request that members check in towards the start of the business day.
  • When members don't check in within three hours, remind them.
  • Two hours later, notify stakeholders of members who are potentially off the grid or at risk.

But it's completely up to you and your organization. You will, however, want to call the npm run sync script at least once on a daily basis, at a time when most of your members are not active.

Deploying Locally

Together App comes with a docker-compose.yml file to make it easy to deploy locally. Overall, most of the steps above apply to deploying locally. There are just a few changes needed to do so.

  • Make sure that Docker is installed.
  • Set up the environment variables in a .env file in the project's root.
  • Set the NODE_ENV environment variable to local.
  • Set the DATABASE_URL environment variable to postgres://admin:admin@db:5432/together.
  • Set the PORT environment variable to 3000.
  • You'll need to use NGROK to proxy requests to the local host, since Slack requests are proxied from the client to the server. You can read more about this here.
  • Set the HOST and NEXTAUTH_URL environment variables to the NGROK host.
  • You'll need to create a second Slack application, changing the host to the NGROK host in the provided URLs, and changing the name of the slash command.

Once you've set up the environment, open the Terminal and run the following commands.

To install dependencies:

npm install

To build the project:

npm run build

To start up the server:

docker-compose up

To sync the database schema, you first need to navigate to the container:

docker exec -it together sh

Then run the migrations:

npm run migrate:local

Then seed data. Please note that your server needs to be up and running before running this command:

npm run initialize

The same goes with scheduled tasks – they need to run inside of the Docker container.


🔧   Custom App Configuration

Together App has a few ways to customize the business logic for your instance. There are configuration files with type definitions location in config/custom that you can directly edit – the content of these files will not change with further releases.

Using a Custom SSO or OAuth Provider

Authentication is implemented using NextAuth, so Together App supports any of the authentication providers supported by NextAuth.

To use a provider other than the default Okta, you can add it to config/custom/auth-provider-config.ts:

import type { Nullable, AuthProviderConfig } from '../../types';
import SlackProvider from 'next-auth/providers/slack';

const SLACK_CLIENT_ID = process.env.SLACK_CLIENT_ID!;
const SLACK_CLIENT_SECRET = process.env.SLACK_CLIENT_SECRET!;

export const authProviderConfig: Nullable<AuthProviderConfig> = {
  provider: SlackProvider({
    clientId: SLACK_CLIENT_ID,
    clientSecret: SLACK_CLIENT_SECRET,
  }),
  type: 'slack',
};

Slack Member Filtration Rules

By default, members that are either restricted or ultra-restricted in your Slack workspace will not be included in check-in requests, the dashboard, or the map. They won't be able to check in or access data.

This can be configured by modifying config/custom/filter-slack-member-rule.ts:

import type { Nullable, FilterSlackMemberRule } from '../../types';

export const filterSlackMemberRule: Nullable<FilterSlackMemberRule> = {
  filterRestricted: false, // Restricted members will also be in Together App
  filterUltraRestricted: true,
};

Check In Request Configuration

By default, when the scheduled job npm run request is invoked, a request is sent to both the organization-wide channel and to each member as a direct message, from the Slack app.

This can be configured by modifying config/custom/check-in-request-rule.ts:

import type { Nullable, CheckInRequestRule } from '../../types';

export const checkInRequestRule: Nullable<CheckInRequestRule> = {
  requestCheckInDirectMessage: false, // The message will not be sent as a direct message
  requestCheckInOrganizationChannel: true,
};

Notification Configuration

By default, when running the npm run notify scheduled job, Together App notifies you in the monitoring channel about members that haven't checked in within the 24 hours previous to the job being invoked.

This can be configured by modifying config/custom/notify-if-not-checked-in-within-rule.ts:

import type { Nullable, NotifyOfLateCheckInRule } from '../../types';

export const notifyIfNotCheckedInWithinRule: Nullable<NotifyOfLateCheckInRule> = { 
  hours: 12, // Will notify stakeholders of members not checked in within last 12 hours
};

Reminder Configuration

By default, when running the npm run remind scheduled job, Together App queries members who have not checked in within the last 24 hours and sends each one a reminder, requesting a check in.

This can be configured by modifying config/custom/remind-if-not-checked-in-within-rule.ts:

import type { Nullable, RemindMemberOfLateCheckInRule } from '../../types';

export const remindIfNotCheckedInWithinRule: Nullable<RemindMemberOfLateCheckInRule> = {
  hours: 48, // Will remind members not checked in within last 48 hours to check in
};

Member At Risk Criteria

Every time a member checks in Together App determines whether or not the member is at risk or in need of assistance, and sends a notification to the monitoring channel.

By default, it considers a member at risk if they meet one of the following criteria:

  • Have checked themselves in as not being in a safe place
  • Have been mobilized
  • Have not checked in within the past 24 hours

This can be configured by declaring a function in config/custom/member-is-at-risk-rule.ts:

import type { Nullable, MemberIsAtRiskRule } from '../../types';
import type { Member } from '../../entities';

export const memberIsAtRiskRule: Nullable<MemberIsAtRiskRule> = (member: Member): boolean => {
  const isSafe = member.checkIn && member.checkIn.isSafe;
  const isNotMobilized = !member.isMobilized; 

  return !Boolean(isSafe && isNotMobilized); // No check in within 24 hours is no longer considered at risk
};

Custom Logger

By default, Together App uses console.log() for errors. You can also declare your own logger that complies to the provided Logger interface:

import type { Logger } from '@slack/logger';
import type { Nullable } from '../../types';
import SomeLogger from '../../logger';

export const logger: Nullable<Logger> = new SomeLogger();

🇺🇦   Authors

@raycharius Ray East (@raycharius)

@hraboviyvadim Vadym Grabovyi (@hraboviyvadim)

@BZahorodnii Boris Zagorodniy (@BZahorodnii)

@korywka Taras Neporozhniy (@korywka)

@ft502 Alexey Chernyshov (@ft502)

Comments
  • Chek-in location issue

    Chek-in location issue

    Hi ! Hope your team is fine and safe ! I am have some issues with setting the location during check-in process . App can't obtain location automatically and when I am trying to set it manually it simply can't find any city In both cases log returns together | LocationProviderError: Sorry, no place could be found. Please try again.

    together | LocationProviderError: Sorry, no place could be found. Please try again. together | at LocationService.getApproximatedLocationByLatLong (webpack-internal:///(api)/./services/LocationService.ts:31:19) together | at runMicrotasks (<anonymous>) together | at processTicksAndRejections (node:internal/process/task_queues:96:5) together | at async GetPlace (webpack-internal:///(api)/./pages/api/get-place.ts:17:26) together | at async Object.apiResolver (/app/node_modules/next/dist/server/api-utils/node.js:182:9) together | at async DevServer.runApi (/app/node_modules/next/dist/server/next-server.js:386:9) together | at async Object.fn (/app/node_modules/next/dist/server/base-server.js:488:37) together | at async Router.execute (/app/node_modules/next/dist/server/router.js:228:32) together | at async DevServer.run (/app/node_modules/next/dist/server/base-server.js:600:29) together | at async DevServer.run (/app/node_modules/next/dist/server/dev/next-dev-server.js:445:20) { together | status: 400, together | code: 'couldNotFetchLocationData', together | data: null together | }

    I am deploying the app locally with docker .

    Any hints how to resolve this issue ? Thanks in advance

    good first issue question 
    opened by andriikaplunenko 3
  • PostgreSQL error : FATAL:  sorry, too many clients already

    PostgreSQL error : FATAL: sorry, too many clients already

    Hi! Have some issues with growing connections and seems they didn't close after some time. `select count(1) from pg_stat_activity; count

    13
    

    (1 row)`

    After 1-2 hours: `select count(1) from pg_stat_activity; count

    104 (1 row)`

    Settings are: select min_val, max_val from pg_settings where name='max_connections'; min_val | max_val ---------+--------- 1 | 262143 (1 row)

    After 120-150 in pg_stat_activity application doesn't work and there error in app logs:

    PrismaClientInitializationError: Invalidprisma.memberRecord.findFirst()` invocation:

    Error querying the database: db error: FATAL: sorry, too many clients already at Object.request (/app/node_modules/@prisma/client/runtime/index.js:39824:15) at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5) at async PrismaClient._request (/app/node_modules/@prisma/client/runtime/index.js:40646:18) at async MemberProvider.findBySlackId (webpack-internal:///(api)/./services/MemberProvider.ts:63:24) at async HandleActions (webpack-internal:///(api)/./pages/api/slack/action.ts:36:24) at async Object.apiResolver (/app/node_modules/next/dist/server/api-utils/node.js:182:9) at async DevServer.runApi (/app/node_modules/next/dist/server/next-server.js:386:9) at async Object.fn (/app/node_modules/next/dist/server/base-server.js:488:37) at async Router.execute (/app/node_modules/next/dist/server/router.js:228:32) { clientVersion: '3.11.0', errorCode: undefined }`

    How i can fix that without data loss in docker container with PostgreSQL?

    Thanks!

    BTW this app is great! )

    good first issue question 
    opened by vladimir-tsapkov 3
  • Issue while calling slack /together command

    Issue while calling slack /together command "[ERROR] web-api:WebClient:1 invalid url [json-pointer:view/blocks/1/accessory/url]"

    2022-03-29T12:30:35.338132+00:00 heroku[router]: at=info method=POST path="/api/slack/action" host=talkable-together-app.herokuapp.com request_id=5a72ce94-2ce8-42e3-9cb8-0256941dcc8d fwd="3.89.79.86" dyno=web.1 connect=1ms service=4ms status=200 bytes=108 protocol=https
    2022-03-29T12:30:35.433256+00:00 app[web.1]: [ERROR]  web-api:WebClient:1 invalid url [json-pointer:view/blocks/1/accessory/url]
    2022-03-29T12:30:35.433810+00:00 app[web.1]: Error: An API error occurred: invalid_arguments
    2022-03-29T12:30:35.433812+00:00 app[web.1]: at platformErrorFromResult (/app/node_modules/@slack/web-api/dist/errors.js:51:33)
    2022-03-29T12:30:35.433812+00:00 app[web.1]: at WebClient.apiCall (/app/node_modules/@slack/web-api/dist/WebClient.js:167:56)
    2022-03-29T12:30:35.433813+00:00 app[web.1]: at processTicksAndRejections (node:internal/process/task_queues:96:5)
    2022-03-29T12:30:35.433813+00:00 app[web.1]: at async ModalService.openOrUpdateView (/app/.next/server/chunks/479.js:1620:13)
    2022-03-29T12:30:35.433814+00:00 app[web.1]: at async ModalService.renderCheckInSelfConfirmation (/app/.next/server/chunks/479.js:1533:9)
    2022-03-29T12:30:35.433814+00:00 app[web.1]: at async HandleActions (/app/.next/server/pages/api/slack/action.js:168:17)
    2022-03-29T12:30:35.433815+00:00 app[web.1]: at async Object.apiResolver (/app/node_modules/next/dist/server/api-utils/node.js:182:9)
    2022-03-29T12:30:35.433815+00:00 app[web.1]: at async NextNodeServer.runApi (/app/node_modules/next/dist/server/next-server.js:386:9)
    2022-03-29T12:30:35.433816+00:00 app[web.1]: at async Object.fn (/app/node_modules/next/dist/server/base-server.js:488:37)
    2022-03-29T12:30:35.433816+00:00 app[web.1]: at async Router.execute (/app/node_modules/next/dist/server/router.js:228:32) {
    2022-03-29T12:30:35.433816+00:00 app[web.1]: code: 'slack_webapi_platform_error',
    2022-03-29T12:30:35.433817+00:00 app[web.1]: data: {
    2022-03-29T12:30:35.433817+00:00 app[web.1]: ok: false,
    2022-03-29T12:30:35.433818+00:00 app[web.1]: error: 'invalid_arguments',
    2022-03-29T12:30:35.433818+00:00 app[web.1]: response_metadata: { messages: [Array], scopes: [Array] }
    2022-03-29T12:30:35.433819+00:00 app[web.1]: }
    2022-03-29T12:30:35.433819+00:00 app[web.1]: }
    
    opened by necroua 2
  • Bump next-auth from 4.3.1 to 4.9.0

    Bump next-auth from 4.3.1 to 4.9.0

    Bumps next-auth from 4.3.1 to 4.9.0.

    Release notes

    Sourced from next-auth's releases.

    [email protected]

    Features

    • providers: allow styling e-mail through theme option (#4841) (ae834f1)

    Bugfixes

    • show experimental api warning only in dev and only once (#4816)

    [email protected]

    Bugfixes

    • core: handle invalid email (cd6ccfd)

    [email protected]

    Features

    • core: pass profile to linkAccount event (#4242) (d8d9ab9)
    • update Middleware (#4757)

    Bugfixes

    • core: respect NEXTAUTH_SECRET in unstable_getServerSession (#4774) (c194261)

    Other

    • deps: upgrade dependencies (a911b4a)

    [email protected]

    Bugfixes

    [email protected]

    Features

    • allow standard Request in NextAuthHandler (#4704)
    • introduce experimental unstable_getServerSession API (#4116)

    Bugfixes

    • edge: support request.cookies as a map (#4745) (73d489b)
    • providers: use client_secret_post auth method for Instagram (#4705) (92dfc3c)
    • ts: infer provider type in signIn (#4679) (e03e234)

    Other

    • adapters: fix references to deprecated adapters repo (#4737) (172813f)
    • add test for invalid callbackUrl handling

    [email protected]

    Bugfixes

    • don't show error on relative callbackUrl

    [email protected]

    ... (truncated)

    Commits
    • 2adfade chore: bump version
    • 32fa01f chore: re-add GITHUB_TOKEN
    • ae834f1 feat(providers): allow styling e-mail through theme option (#4841)
    • 4d4c276 docs: replace npm2yarn with npm2yarn2pnpm docusaurus plugin (#4805)
    • f4c0d5a docs: Correct grammatical error (#4836)
    • 01cd6b0 docs: fix unstable_getServerSession arguments (#4815)
    • 993c0f4 fix: show experimental api warning only in dev and only once (#4816)
    • 163d8c6 chore: bump version
    • 5319dca fix(ts): fall back to empty string when parsing cookie
    • cd6ccfd fix(core): handle invalid email
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump next-auth from 4.3.1 to 4.5.0

    Bump next-auth from 4.3.1 to 4.5.0

    Bumps next-auth from 4.3.1 to 4.5.0.

    Release notes

    Sourced from next-auth's releases.

    [email protected]

    Bugfixes

    • don't show error on relative callbackUrl

    [email protected]

    Features

    • callback: return always status code 401 on error (#4601) (4daa63d)
    • middleware: support custom cookieName (#4385) (7d8cc70)
    • middleware: support custom jwt.decode (#4210) (16622f6)
    • provider: Add United Effects provider (#4546) (81afeef)
    • providers: make issuer configurable on Salesforce (#4658) (358b80d)

    Bugfixes

    • middleware: use relative URL for sign-in page callbackUrl (#4534) (75602a3)
    • ts: allow getToken in getServerSideProps (#4659) (e4ee520)
    • ts: remove unused type (#4657) (0a7a916)
    • ts: signIn infer provider type (#4623) (46089eb)
    • handle invalid callbackUrl

    Other

    • signout: fix skipped test (#4484) (0b953bd)

    [email protected]

    Bugfixes

    • client: add additional type (#4402) (9f40cd1)
    • providers: profile types (#4202) (8288ae5)
    • ts: handle NextRequest type (#4472) (fb4bbc3)
    • allow react@18 as peer dependency
    • loosen env variable URL fallback (#4443)

    Other

    • remove redundant and deprecated doc (#4475)

    [email protected]

    Bugfixes

    • providers: add optional chaining to avoid nullish reference errors (#4365) (59daa0e)
    • signin: set email sign-in input to "email" & "required"(#4352) (fd755bc)
    • more strict default callback url handling
    • Cleanup global __NEXTAUTH state after unmount (#4383)
    • update default callbacks.redirect

    Other

    ... (truncated)

    Commits
    • 8c5d9fa chore: bump versions
    • 49a8d51 fix: don't show error on relative callbackUrl
    • c0d2517 chore: bump version
    • 76560ae chore: no git checks on publish
    • 25517b7 fix: handle invalid callbackUrl
    • 4daa63d feat(callback): return always status code 401 on error (#4601)
    • 81afeef feat(provider): Add United Effects provider (#4546)
    • 008f29e docs(next): Update config comment (#4664)
    • e4ee520 fix(ts): allow getToken in getServerSideProps (#4659)
    • 358b80d feat(providers): make issuer configurable on Salesforce (#4658)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump next-auth from 4.3.1 to 4.3.3

    Bump next-auth from 4.3.1 to 4.3.3

    Bumps next-auth from 4.3.1 to 4.3.3.

    Release notes

    Sourced from next-auth's releases.

    [email protected]

    Bugfixes

    • providers: add optional chaining to avoid nullish reference errors (#4365) (59daa0e)
    • signin: set email sign-in input to "email" & "required"(#4352) (fd755bc)
    • more strict default callback url handling
    • Cleanup global __NEXTAUTH state after unmount (#4383)
    • update default callbacks.redirect

    Other

    • adapters: Add next-autth as devDependencies for adapters (#4226) (6e28ccf)
    • bump versions
    • manually upgrade dep version
    • Update JWT docs to reflect JWE changes in v4 (#4313)

    [email protected]

    Bugfixes

    • update default callbacks.redirect

    Other

    • adapters: Add next-autth as devDependencies for adapters (#4226) (6e28ccf)
    • manually upgrade dep version
    • Update JWT docs to reflect JWE changes in v4 (#4313)
    Commits
    • e71118b chore: bump versions
    • afdb3c8 fix: more strict default callback url handling
    • fd755bc fix(signin): set email sign-in input to "email" & "required"(#4352)
    • 59daa0e fix(providers): add optional chaining to avoid nullish reference errors (#4365)
    • 58d06ed fix: Cleanup global __NEXTAUTH state after unmount (#4383)
    • 82159d3 docs: remove auth from keycloack url (#4391)
    • abb9fed chore: bump versions
    • 5471c0f chore: use --no-workspaces
    • b2da0b3 chore: add --verbose
    • b3b8d4b chore: log npm config list
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump next-auth from 4.3.1 to 4.3.2

    Bump next-auth from 4.3.1 to 4.3.2

    Bumps next-auth from 4.3.1 to 4.3.2.

    Release notes

    Sourced from next-auth's releases.

    [email protected]

    Bugfixes

    • update default callbacks.redirect

    Other

    • adapters: Add next-autth as devDependencies for adapters (#4226) (6e28ccf)
    • manually upgrade dep version
    • Update JWT docs to reflect JWE changes in v4 (#4313)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • "Sorry, this member could be found"

    Upon trying to log in or pressing the "Sign In with SSO" button I'm getting

    "MemberNotFoundError: Sorry, this member _could be_ found.".

    Additional info:

    • I'm deploying it without docker
    • It's not necessary to try logging in in order to invoke the error
    • I've followed this section, but in order to fix the issue: https://github.com/MacPaw/together-app#using-a-custom-sso-or-oauth-provider
    • The full output
    npm run dev
    
    > [email protected] dev
    > next dev
    
    ready - started server on 0.0.0.0:3000, url: http://localhost:3000
    info  - Loaded env from /home/nr/apps/together-app/.env
    info  - automatically enabled Fast Refresh for 1 custom loader
    event - compiled client and server successfully in 2.6s (342 modules)
    warn  - using beta Middleware (not covered by semver) - https://nextjs.org/docs/messages/beta-middleware
    wait  - compiling /_middleware...
    event - compiled client and server successfully in 645 ms (396 modules)
    wait  - compiling /login (client and server)...
    event - compiled client and server successfully in 1584 ms (438 modules)
    wait  - compiling /api/auth/[...nextauth]...
    event - compiled client and server successfully in 536 ms (473 modules)
    wait  - compiling /...
    event - compiled client and server successfully in 499 ms (488 modules)
    wait  - compiling / (client and server)...
    event - compiled client and server successfully in 1111 ms (547 modules)
    MemberNotFoundError: Sorry, this member could be found.
        at MemberProvider.getByEmail (webpack-internal:///./services/MemberProvider.ts:58:19)
        at async getServerSideProps (webpack-internal:///./pages/index.tsx:104:22)
        at async Object.renderToHTML (/home/nr/apps/together-app/node_modules/next/dist/server/render.js:589:20)
        at async doRender (/home/nr/apps/together-app/node_modules/next/dist/server/base-server.js:879:38)
        at async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate (/home/nr/apps/together-app/node_modules/next/dist/server/base-server.js:979:28)
        at async /home/nr/apps/together-app/node_modules/next/dist/server/response-cache.js:64:36 {
      status: 400,
      code: null,
      data: null
    }
    wait  - compiling /_error (client and server)...
    
    • I've failed to run npm run initialize, the output message I get upon running is:
    > [email protected] initialize
    > node jobs-dist/initialize.js
    
    Authorization is required!
    Request failed with status code 401
    

    I'd appreciate any hints on what I might've done wrong.

    good first issue question 
    opened by iizxp 1
  • Bump json5 from 1.0.1 to 1.0.2

    Bump json5 from 1.0.1 to 1.0.2

    Bumps json5 from 1.0.1 to 1.0.2.

    Release notes

    Sourced from json5's releases.

    v1.0.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295). This has been backported to v1. (#298)
    Changelog

    Sourced from json5's changelog.

    Unreleased [code, diff]

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump jose from 4.6.0 to 4.9.3

    Bump jose from 4.6.0 to 4.9.3

    Bumps jose from 4.6.0 to 4.9.3.

    Release notes

    Sourced from jose's releases.

    v4.9.3

    Refactor

    • update CEK length validation error message (81a92a9)
    • update key input validation error messages (2eac34a)
    • update keylike description for WinterCG (6741679)

    v4.9.2

    Fixes

    • limit default PBES2 alg's computational expense (03d6d01)

    v4.9.1

    Fixes

    • deno: add a Deno package entrypoint (9f3c459)

    v4.9.0

    Features

    • add support for RFC 9278 - JWK Thumbprint URI (d06ce65)

    Refactor

    • consume some base64url decode errors (#436) (caaf2c3)
    • unify JOSENotSupported throw on key export (fe5d093)

    v4.8.3

    This release contains only code refactoring and documentation updates.

    v4.8.1

    Fixes

    • typescript: add types export for nodenext module resolution (#406) (5a6d8f0)

    v4.8.0

    Features

    • add "worker" export in package.json (#400) (c58c80a)
    • optional headers options for createRemoteJWKSet (#397) (b4612f5)

    v4.7.0

    Features

    • add createRemoteJWKSet cacheMaxAge option (5017d95), closes #394

    v4.6.2

    Fixes

    ... (truncated)

    Changelog

    Sourced from jose's changelog.

    4.9.3 (2022-09-15)

    Refactor

    • update CEK length validation error message (81a92a9)
    • update key input validation error messages (2eac34a)
    • update keylike description for WinterCG (6741679)

    4.9.2 (2022-09-01)

    Fixes

    • limit default PBES2 alg's computational expense (03d6d01)

    4.9.1 (2022-08-29)

    Fixes

    • deno: add a Deno package entrypoint (9f3c459)

    4.9.0 (2022-08-17)

    Features

    • add support for RFC 9278 - JWK Thumbprint URI (d06ce65)

    Refactor

    • consume some base64url decode errors (#436) (caaf2c3)
    • unify JOSENotSupported throw on key export (fe5d093)

    4.8.3 (2022-06-29)

    4.8.1 (2022-05-02)

    Fixes

    • typescript: add types export for nodenext module resolution (#406) (5a6d8f0)

    4.8.0 (2022-04-26)

    Features

    ... (truncated)

    Commits
    • eca8ac3 chore(release): 4.9.3
    • 2eac34a refactor: update key input validation error messages
    • 6741679 refactor: update keylike description for WinterCG
    • 81a92a9 refactor: update CEK length validation error message
    • 644a13b style: prettier
    • ec6a6a5 test: add a check that signatures are verified before claims set
    • f64cadd chore: cleanup after publish
    • db71b3d chore(release): 4.9.2
    • 03d6d01 fix: limit default PBES2 alg's computational expense
    • 8c5cc34 chore: cleanup after publish
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump next-auth from 4.3.1 to 4.10.3

    Bump next-auth from 4.3.1 to 4.10.3

    Bumps next-auth from 4.3.1 to 4.10.3.

    Release notes

    Sourced from next-auth's releases.

    [email protected]

    Bugfixes

    • providers: add normalizeIdentifier to EmailProvider (afb1fcda)
    • ts: fix jsdoc link to documentation (#5039) (a21db895)
    • avoid redirect on always public paths (#5000)

    [email protected]

    Bugfixes

    [email protected]

    Bugfixes

    • providers: migrate GitLab provider to TS (#4929) (2725d07e)
    • providers: allow issuer in Azure AD B2C (042955ea)
    • providers: typo in GitHub provider scope (#4938) (bb664a27)
    • ts: remove TS workaround for withAuth (#4926) (46eedee3)
    • ts: handleMiddleware return type can be NextMiddlewareResult (#4818) (8853000f)

    Other

    • ts: explicitly set next path in next-auth (fb60554a)
    • revert type assertion
    • add Thang to contributor (#4944)
    • add TODO comment for next major version

    [email protected]

    Features

    • providers: Add Wikimedia Oauth Provider (#4813) (c22d613)
    • providers: add Duende IdentityServer 6 (#4850) (3c210d9)

    Bugfixes

    • middleware: allow secret as option in Middleware (#4846) (c59a4e0)
    • providers: fix VK provider and convert to TS (#3709) (cdf467e)
    • ts: use correct type for nodemailer config in the EmailProvider (#4097) (1b91282)
    • ts: typo in Azure Active Directory Provider (#4895) (af3c2dd)
    • ts: make colorScheme optional (#4868) (c1f7ce3)

    Other

    • providers: convert GitHub provider to TypeScript (#4908) (3666e43)
    • update Next.js example, bump dependencies

    [email protected]

    Features

    ... (truncated)

    Commits
    • afb1fcd fix(providers): add normalizeIdentifier to EmailProvider
    • a21db89 fix(ts): fix jsdoc link to documentation (#5039)
    • e8371ab docs(providers): update custom Reddit provider to v4 (#4985)
    • 9cdeb2c docs: Fixed Typo (#5025)
    • 89829d8 chore: fix unstable_getServerSession usages in dev app (#5017)
    • aedabc8 fix: avoid redirect on always public paths (#5000)
    • 9f2cdad docs: add Thang as point of contact
    • b107ca4 docs: update path to gitlab provider (#4997)
    • 6590993 chore(release): bump package version(s) [skip ci]
    • 0ea9679 fix: improve logger (#4970)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • [FEATURE] Ability to add grouping by division, team etc

    [FEATURE] Ability to add grouping by division, team etc

    Hello. It would be great to have an ability to group company members by division, team etc

    I didn't found any information about this feature in documentation

    Is it possible?

    opened by niklissad 0
  • Bump minimist from 1.2.5 to 1.2.6

    Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.0.1)
  • v1.0.1(Mar 25, 2022)

    • Fixed a bug where jobs would time out for organizations with a large number of members in their Slack workspace.
    • Fixed a bug where the sync job would fail due to unique constraints on the slackId column.
    • Fixed a bug where using the email field from the session would not fetch the right member from the database if differences in capitalization or whitespace at the beginning or end of the string.
    • Improved error handling for calls to the Google API.
    • Improved the README based on feedback received from GitHub issues.

    To update to this version, all you need to do is fetch upstream.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Mar 18, 2022)

Owner
MacPaw Inc.
Make Useful Unboring
MacPaw Inc.
Greasemonkey script to allow marking items on the interactive map of Elden Ring as completed.

Greasemonkey script (or Tampermonkey) to allow marking items on the interactive map of Elden Ring as completed. The interactive map is a Fextralife-project, all credits for the map go to them.

Daniel Tischner 6 Jun 19, 2022
Interactive map overlay for finding secrets hidden around the world of Lost Ark.

Lostark Map Overlay This is an interactive map overlay which is resizable, movable and can be kept up during gameplay for finding secrets hidden aroun

Omar Minaya 6 Dec 29, 2022
Serverless raster and vector map tile generation using Mapnik and AWS Lambda

tilegarden ??️ ?? Contents About Usage Deployment to AWS Additional Configuration Options Required AWS Permissions Features Configuration Selection an

Azavea 89 Dec 22, 2022
A Node.js map tile library for PostGIS and torque.js, with CartoCSS styling

Windshaft A Node.js map tile library for PostGIS and torque.js, with CartoCSS styling. Can render arbitrary SQL queries Generates image and UTFGrid in

CARTO 306 Dec 22, 2022
jQuery Vector Map Library

This project is a heavily modified version of jVectorMap as it was in April of 2012. I chose to start fresh rather than fork their project as my inten

10 Best Design 1.8k Dec 28, 2022
jQuery Vector Map Library

This project is a heavily modified version of jVectorMap as it was in April of 2012. I chose to start fresh rather than fork their project as my inten

10 Best Design 1.8k Dec 28, 2022
JavaScript WebGL 3D map rendering engine

VTS Browser JS is a powerful JavaScript 3D map rendering engine with a very small footprint (about 163 kB of gziped JS code). It provides almost all f

Melown Technologies, SE 203 Dec 7, 2022
Mapbox Visual for Power BI - High performance, custom map visuals for Power BI dashboards

Mapbox Visual for Microsoft Power BI Make sense of your big & dynamic location data with the Mapbox Visual for Power BI. Quickly design high-performan

Mapbox 121 Nov 22, 2022
Add time dimension capabilities on a Leaflet map.

Leaflet TimeDimension Add time dimension capabilities on a Leaflet map. Examples and basic usage API L.Map L.TimeDimension L.TimeDimension.Layer L.Tim

SOCIB public code 379 Dec 23, 2022
Lightweight Node.js isochrone map server

Galton Lightweight Node.js isochrone server. Build isochrones using OSRM, Turf and concaveman. Francis Galton is the author of the first known isochro

Urbica 266 Dec 17, 2022
A pluggable Node.js map tile server.

TileStrata TileStrata is a pluggable "slippy map" tile server that emphasizes code-as-configuration. The primary goal is painless extendability. It's

Natural Atlas 409 Dec 30, 2022
A map tool with real-time collaboration 🗺️

Mapus Maps with real-time collaboration ??️ Mapus is a tool to explore and annotate collaboratively on a map. You can draw, add markers, lines, areas,

Alyssa X 3k Jan 4, 2023
3D web map rendering engine written in TypeScript using three.js

3D web map rendering engine written in TypeScript using three.js

HERE Technologies 1.2k Dec 30, 2022
Mind elixir is a free open source mind map core.

Mind-elixir is a framework agnostic mind map core

DJJo 1.4k Jan 2, 2023
Fast Map built for keys that are always fixed size uniformly distributed buffers.

turbo-hash-map Fast Map built for keys that are always fixed size uniformly distributed buffers. npm install turbo-hash-map Uses a prefix trie to map

Mathias Buus 39 Jun 20, 2022
A library that makes Image Map Area responsive

A library that makes Image Map Area responsive

elenh 1 Jan 21, 2022
Generates an embeddable map that displays business info from an OSM object id.

# OSM Business Card Generates an embeddable map that displays business info from an OSM object id. Loads object type (n/w/r) and id from url parameter

Will Bennett 6 May 26, 2022
Simple location picker on Leaflet map

Leaflet Location Picker Simple location picker with Leaflet map Usage: <label>Insert a Geo Location <input id="geoloc" type="text" value="" /> </lab

Stefano Cudini 37 Nov 17, 2022
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL

Mapbox GL JS is a JavaScript library for interactive, customizable vector maps on the web. It takes map styles that conform to the Mapbox Style Specif

Mapbox 9.4k Jan 7, 2023