{
  "name": "Build production-ready user authentication with Airtable and JWT",
  "nodes": [
    {
      "id": "aca01100-49cc-4b19-b8da-47809f60ab13",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1660,
        420
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "62520060-c70a-4b77-a3af-bd638ff03bc6",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1640,
        -880
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "8dcdd064-ebdd-4b82-a0cb-e95313251223",
      "name": "hash password",
      "type": "n8n-nodes-base.crypto",
      "position": [
        -480,
        -640
      ]
    },
    {
      "id": "52acc934-d361-4c07-bfe7-31f0813b2f25",
      "name": "add record to database",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -260,
        -640
      ]
    },
    {
      "id": "93296673-4c4f-4b34-b800-30c323c48b4b",
      "name": "respond with sign up successful",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -40,
        -640
      ]
    },
    {
      "id": "988e0252-18ce-4e01-8e31-57c7bb2f3aa4",
      "name": "request to sign up",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1100,
        -840
      ]
    },
    {
      "id": "be3afe14-59c1-4f61-a311-7c194c9f5501",
      "name": "request to sign in",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1120,
        -180
      ]
    },
    {
      "id": "da2d1f9c-97a6-4d24-b231-5e054269da51",
      "name": "Check if email in database",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -900,
        -840
      ]
    },
    {
      "id": "e73be62c-1b32-4a55-99b2-f28ef6e50761",
      "name": "If email in database",
      "type": "n8n-nodes-base.if",
      "position": [
        -680,
        -840
      ]
    },
    {
      "id": "6f5af8f1-e00a-4b3c-aae2-b2d7b65e3a0e",
      "name": "respond with email already in use",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -40,
        -840
      ]
    },
    {
      "id": "eaf42d05-4166-4c47-a29d-a6efc7ed1765",
      "name": "check if user exists",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -920,
        -180
      ]
    },
    {
      "id": "6271eb5e-4a7b-47b4-bb70-da6401d24b41",
      "name": "If user exists",
      "type": "n8n-nodes-base.if",
      "position": [
        -740,
        -180
      ]
    },
    {
      "id": "f70eb264-2b83-45ae-87a3-c839d6357121",
      "name": "hash submitted password",
      "type": "n8n-nodes-base.crypto",
      "position": [
        -500,
        -180
      ]
    },
    {
      "id": "f0aa90fa-45fc-4c92-b024-92b1a4489668",
      "name": "If passwords match",
      "type": "n8n-nodes-base.if",
      "position": [
        -280,
        -180
      ]
    },
    {
      "id": "8b987f11-87a5-43ae-95fe-ee1d15eca374",
      "name": "respond with wrong email submitted",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -500,
        20
      ]
    },
    {
      "id": "a9dcde02-a2cc-4494-9a76-93218510f0e8",
      "name": "respond with successful login",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -60,
        -180
      ]
    },
    {
      "id": "ec77d145-3648-42f9-afe2-a506231b68e4",
      "name": "respond with wrong password submitted",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -60,
        0
      ]
    },
    {
      "id": "d8a3d0a3-5463-4d83-b7c8-00b26abdb13e",
      "name": "Specify Current Details",
      "type": "n8n-nodes-base.set",
      "position": [
        -720,
        500
      ]
    },
    {
      "id": "868e44b9-e6b1-44f5-8093-b5a4d89859c2",
      "name": "Specify New Details",
      "type": "n8n-nodes-base.set",
      "position": [
        -720,
        720
      ]
    },
    {
      "id": "57ec0d68-c052-41df-aed6-a1df8654cf0a",
      "name": "request to get user details",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1120,
        500
      ]
    },
    {
      "id": "05c6ab14-aeff-49b8-bff1-74bc052d6f11",
      "name": "request to update user details",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1120,
        720
      ]
    },
    {
      "id": "7065331a-f7f9-40d3-8ec8-d7d68ba117c5",
      "name": "get current details",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -920,
        500
      ]
    },
    {
      "id": "fb82b618-d2ee-480a-b66f-47d178a7383a",
      "name": "update with new details",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -920,
        720
      ]
    },
    {
      "id": "f5cff30e-48c2-43a5-a3be-98f58a710e9d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1660,
        -200
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    }
  ],
  "connections": {
    "hash password": {
      "main": [
        [
          {
            "node": "add record to database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If user exists": {
      "main": [
        [
          {
            "node": "hash submitted password",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "respond with wrong email submitted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If passwords match": {
      "main": [
        [
          {
            "node": "respond with successful login",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "respond with wrong password submitted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "request to sign in": {
      "main": [
        [
          {
            "node": "check if user exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "request to sign up": {
      "main": [
        [
          {
            "node": "Check if email in database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get current details": {
      "main": [
        [
          {
            "node": "Specify Current Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If email in database": {
      "main": [
        [
          {
            "node": "respond with email already in use",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "hash password",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check if user exists": {
      "main": [
        [
          {
            "node": "If user exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "add record to database": {
      "main": [
        [
          {
            "node": "respond with sign up successful",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "hash submitted password": {
      "main": [
        [
          {
            "node": "If passwords match",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "update with new details": {
      "main": [
        [
          {
            "node": "Specify New Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if email in database": {
      "main": [
        [
          {
            "node": "If email in database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "request to get user details": {
      "main": [
        [
          {
            "node": "get current details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "request to update user details": {
      "main": [
        [
          {
            "node": "update with new details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}