From 3927d1eeb9846e65cbcc9a62187e67f338442ada Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 16:21:25 +0100
Subject: [PATCH 01/18] Labels and teams blog

---
 .../+page.markdoc                             | 114 ++++++++++++++++++
 1 file changed, 114 insertions(+)
 create mode 100644 src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
new file mode 100644
index 00000000000..516135cd9bb
--- /dev/null
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -0,0 +1,114 @@
+---
+layout: post
+title: How to use Appwrite Labels and Team to manage user permissions
+description: Understanding the difference between Teams and Labels and how to use them for managing users and permissions.
+date: 2024-01-16
+cover: /images/blog/baas.png
+timeToRead: 8
+author: dennis-ivy
+category: engineering
+featured: false
+---
+
+Teams and Labels allow us to categorize and group users together, allowing us to set permissions to resources at the Team and label level instead of at the individual user level. Grouping users together makes managing permissions to documents, files and functions much more efficient this way. 
+
+To think of this in real-world terms, imagine for a second we were building the next social media application. Teams can be used to create admins and moderators, and these admins and moderators would have permission to delete and flag posts that don’t meet community guidelines. The owner at the document level would have the ability to update and delete this post, but anyone who is on the moderator Team would also have the ability to delete the post, something that is normally restricted to only the owner of the post. We can also change which users have these permissions at any point by adding and removing users and updating the group-level permissions.
+
+
+Another example we can take a look at would be a streaming service like Amazon Video. How do we give users access to a movie or show they paid for? This is where Teams and Labels make our lives easier. By simply adding Labels to users we could decide which users have access to specific resources like movies or shows in our application.
+
+Without Teams and Labels, we could always assign permissions to users individually, but this can become problematic very quickly when we start trying to modify these permissions and update who has access to what.
+
+So let’s dive into the next section and see how Teams and Labels work and the differences between the two.
+
+## Teams Vs Labels
+
+Teams and labels accomplish much of the same thing, however there are some technical and fundamental differences between the two. While deciding which one to use will be based on your preferences and specific needs, I’ll point out the key differences and try to guide you in the right direction by providing an example of when one may be preferred over the other. 
+
+### Teams
+
+Teams are designed to group users together, allowing for shared access to resources within an application. For example, in an app like Discord or Slack, we can create Teams and invite users to be a part of the Team (Ex: Server or chat room).
+
+One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. 
+
+This allows for granular control over what each Team member can do based on their role within the Team. 
+
+### Labels
+
+Labels are essentially custom tags that you can assign to a user. They act as custom-defined markers or classifications that we can place on specific users.
+
+Just like Teams, we can grant permissions to specific Labels. Labels are attached to individual user accounts and are used to categorize users on a one-to-one basis. Labels can be used in a similar manner to Teams but are a more lightweight and flexible way to manage users and permissions.
+
+This would make Labels a great option for managing which users can view restricted content behind a paywall like a course on Udemy or an e-book on a digital library platform. In this example you would simply attach a label that is unique to a user after they pay to access a product, and from that point on, the label would grant the user permission.  If this access was subscription-based and the user stopped paying, we could simply remove the label from the user, and their access would be revoked since they no longer carry the label that gives them access. 
+ 
+### Summary
+
+- Labels are great for tagging users and assigning permissions based on those tags, while Teams are for grouping users together and allowing role-based management within a Team.
+- Labels classify users based on attributes or behaviors, whereas Teams facilitate collaboration and shared access among a group.
+- Labels offer flexibility in user segmentation, while Teams provide structure for collaborative environments.
+
+## How permissions work with Teams and labels
+
+Here’s the process of granting users permission to resources through Teams and labels. Be sure to pay attention to step 3 in the process. There’s a slight difference in how users connect to Teams Vs. labels.
+
+1. Create a Team or Label  
+2. Assign permissions to that Team or Label
+3. **Team**: Add users to the Team / **Label**: Add a Label to the user
+4. Users now inherit permissions from the Team they are on or the Labels they have been given.
+
+Did you catch the difference between Labels and Teams in step #3? With Teams, we are adding users to the Team, and with Labels, we do the opposite by assigning Labels to a user.
+
+## Managing Teams & Labels from the Console
+
+When getting started with Teams and Labels, it could be helpful to set things up from the console manually so you can better visualize how things work. 
+
+## Teams
+
+Let's start with creating a new Team, adding members, and assigning roles to those members of the Team. 
+
+1 - To create a Team, you can go to the “Auth” tab from your console and select “Teams”. From here, you can click on “Create Team” and complete the process of creating by giving your new Team a name
+
+2 - Once your Team is created, you can add a Member to the Team by selecting the “Members” tab and clicking “Create Membership”. Here you will enter the user's email address (name can be left blank) and assign a role to the member. Roles are optional, so you can leave this part blank. 
+
+That’s it for creating a Team and adding members from the appwrite console. Now you can assign document, storage, and function permissions to your Teams. As an example, for collection level permissions, you can go to the “settings'' tab in a collection, and in the “permissions” section, choose “Select Teams'' to give permissions to an entire Team or “Custom permissions” if you want to assign permission to only users with a particular role within the Team. 
+
+Labels
+
+Labels can also be assigned from the auth tab. To assign a label select a user and add a label in the “Labels” section.
+
+Assigning permissions to labels is the same as it is for Teams, only you would choose the “Label” section in the drop down menu.
+SDK Usage
+
+From a technical perspective, it’s important to note a key difference in how we use Teams and Labels when it comes to the SDK.
+
+Labels can only be created & modified from the console or Server SDK, while Teams can be created and modified with both the client and server SDK’s.
+
+### Teams
+
+✅ Server SDK
+✅ Client SDK
+
+```javascript
+import { Client, Teams } from "appwrite";
+
+const client = //...
+
+const Teams = new Teams(client);
+
+const promise = Teams.create('[Team_ID]', '[NAME]');
+
+
+## Labels
+
+✅ Server SDK
+❌ Client SDK
+
+```javascript
+const sdk = require('node-appwrite');
+
+const client = //...
+
+const users = new sdk.Users(client);
+
+const promise = users.updateLabels('[USER_ID]', ['subscriber']);
+

From b6540a5eb5f5defb900475e1bfd7c18fd13073d3 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 16:58:32 +0100
Subject: [PATCH 02/18] Updated code block

---
 .../+page.markdoc                                           | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
index 516135cd9bb..6d7332b30a4 100644
--- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -86,6 +86,7 @@ Labels can only be created & modified from the console or Server SDK, while Team
 ### Teams
 
 ✅ Server SDK
+
 ✅ Client SDK
 
 ```javascript
@@ -96,11 +97,12 @@ const client = //...
 const Teams = new Teams(client);
 
 const promise = Teams.create('[Team_ID]', '[NAME]');
-
+```
 
 ## Labels
 
 ✅ Server SDK
+
 ❌ Client SDK
 
 ```javascript
@@ -111,4 +113,4 @@ const client = //...
 const users = new sdk.Users(client);
 
 const promise = users.updateLabels('[USER_ID]', ['subscriber']);
-
+```

From 8b863fdb56b8bcfc3a62819bd756253403f08dc9 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 17:01:18 +0100
Subject: [PATCH 03/18] labels blog cover

---
 teams-labels.png | Bin 0 -> 1519450 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 teams-labels.png

diff --git a/teams-labels.png b/teams-labels.png
new file mode 100644
index 0000000000000000000000000000000000000000..6dfc07152da8d55cfcdec0d21aee7770c97a2701
GIT binary patch

From faf83bfc5fb9e2f410e02ade178adece6223f903 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 17:02:47 +0100
Subject: [PATCH 04/18] images added for blog

---
 labels 1.png | Bin 0 -> 123696 bytes
 labels 2.png | Bin 0 -> 518220 bytes
 labels 3.png | Bin 0 -> 164942 bytes
 labels 4.png | Bin 0 -> 75772 bytes
 labels 5.png | Bin 0 -> 76359 bytes
 5 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 labels 1.png
 create mode 100644 labels 2.png
 create mode 100644 labels 3.png
 create mode 100644 labels 4.png
 create mode 100644 labels 5.png

diff --git a/labels 1.png b/labels 1.png
new file mode 100644
index 0000000000000000000000000000000000000000..11457a76bbba77c7ed8c029f1cefc163453e6aa2
GIT binary patch
diff --git a/labels 2.png b/labels 2.png
new file mode 100644
index 0000000000000000000000000000000000000000..f736f53a39d96203064e70b2a16064d0ff9f76ad
GIT binary patch
diff --git a/labels 3.png b/labels 3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a180f78d43395187207ff4ff0a8d79e3cd9033fe
GIT binary patch
diff --git a/labels 4.png b/labels 4.png
new file mode 100644
index 0000000000000000000000000000000000000000..44542150878028ecc7224b2616e1e899ac8eb7c5
GIT binary patch
diff --git a/labels 5.png b/labels 5.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c928b1d18c683bb80cc621e082cc3a4a7b90a04
GIT binary patch

From 13cec30450e4159960f74cf7aa2497a72ed2499b Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 17:14:09 +0100
Subject: [PATCH 05/18] added images

---
 .../+page.markdoc                                          | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
index 6d7332b30a4..1b4ebb70f97 100644
--- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -9,6 +9,7 @@ author: dennis-ivy
 category: engineering
 featured: false
 ---
+![Labels vs Teams](/images/blog/labels 3.png)
 
 Teams and Labels allow us to categorize and group users together, allowing us to set permissions to resources at the Team and label level instead of at the individual user level. Grouping users together makes managing permissions to documents, files and functions much more efficient this way. 
 
@@ -29,6 +30,8 @@ Teams and labels accomplish much of the same thing, however there are some techn
 
 Teams are designed to group users together, allowing for shared access to resources within an application. For example, in an app like Discord or Slack, we can create Teams and invite users to be a part of the Team (Ex: Server or chat room).
 
+![Labels vs Teams](/images/blog/labels 3.png)
+
 One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. 
 
 This allows for granular control over what each Team member can do based on their role within the Team. 
@@ -37,6 +40,8 @@ This allows for granular control over what each Team member can do based on thei
 
 Labels are essentially custom tags that you can assign to a user. They act as custom-defined markers or classifications that we can place on specific users.
 
+![Labels vs Teams](/images/blog/labels 1.png)
+
 Just like Teams, we can grant permissions to specific Labels. Labels are attached to individual user accounts and are used to categorize users on a one-to-one basis. Labels can be used in a similar manner to Teams but are a more lightweight and flexible way to manage users and permissions.
 
 This would make Labels a great option for managing which users can view restricted content behind a paywall like a course on Udemy or an e-book on a digital library platform. In this example you would simply attach a label that is unique to a user after they pay to access a product, and from that point on, the label would grant the user permission.  If this access was subscription-based and the user stopped paying, we could simply remove the label from the user, and their access would be revoked since they no longer carry the label that gives them access. 
@@ -49,6 +54,8 @@ This would make Labels a great option for managing which users can view restrict
 
 ## How permissions work with Teams and labels
 
+![Labels vs Teams](/images/blog/labels 4.png)
+
 Here’s the process of granting users permission to resources through Teams and labels. Be sure to pay attention to step 3 in the process. There’s a slight difference in how users connect to Teams Vs. labels.
 
 1. Create a Team or Label  

From 65998fbcab6a2f88ac24b80a597465db71752a56 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 17:18:34 +0100
Subject: [PATCH 06/18] labels image

---
 labels 6.png | Bin 0 -> 56974 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 labels 6.png

diff --git a/labels 6.png b/labels 6.png
new file mode 100644
index 0000000000000000000000000000000000000000..19dd89b4ea7e9b2c545112ab651bed2283d8f8f4
GIT binary patch

From 5d4f98a0019f927b0c61df41ca1369dfdcc866a0 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Mon, 15 Jan 2024 17:20:42 +0100
Subject: [PATCH 07/18] added images

---
 .../manage-user-permissions-with-labels-and-teams/+page.markdoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
index 1b4ebb70f97..ab09027cee7 100644
--- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -30,7 +30,7 @@ Teams and labels accomplish much of the same thing, however there are some techn
 
 Teams are designed to group users together, allowing for shared access to resources within an application. For example, in an app like Discord or Slack, we can create Teams and invite users to be a part of the Team (Ex: Server or chat room).
 
-![Labels vs Teams](/images/blog/labels 3.png)
+![Labels vs Teams](/images/blog/labels 6.png)
 
 One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. 
 

From 69273aa2b983cc9dc3da996d97a2ad69712824e2 Mon Sep 17 00:00:00 2001
From: divanov11 <ivanovsin11@gmail.com>
Date: Mon, 15 Jan 2024 09:13:08 -0800
Subject: [PATCH 08/18] Image folder restructured. Article cover added

---
 .../+page.markdoc                             |  12 +++++++-----
 .../labels1.png                               | Bin
 .../labels2.png                               | Bin
 .../labels3.png                               | Bin
 .../labels4.png                               | Bin
 .../labels5.png                               | Bin
 .../labels6.png                               | Bin
 .../labels_cover.png                          | Bin 0 -> 3502357 bytes
 8 files changed, 7 insertions(+), 5 deletions(-)
 rename labels 1.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png (100%)
 rename labels 2.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels2.png (100%)
 rename labels 3.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png (100%)
 rename labels 4.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png (100%)
 rename labels 5.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels5.png (100%)
 rename labels 6.png => static/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png (100%)
 create mode 100644 static/images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
index ab09027cee7..37411d7fc7c 100644
--- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -3,16 +3,18 @@ layout: post
 title: How to use Appwrite Labels and Team to manage user permissions
 description: Understanding the difference between Teams and Labels and how to use them for managing users and permissions.
 date: 2024-01-16
-cover: /images/blog/baas.png
+cover: /images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png
 timeToRead: 8
 author: dennis-ivy
 category: engineering
 featured: false
 ---
-![Labels vs Teams](/images/blog/labels 3.png)
+
 
 Teams and Labels allow us to categorize and group users together, allowing us to set permissions to resources at the Team and label level instead of at the individual user level. Grouping users together makes managing permissions to documents, files and functions much more efficient this way. 
 
+![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png)
+
 To think of this in real-world terms, imagine for a second we were building the next social media application. Teams can be used to create admins and moderators, and these admins and moderators would have permission to delete and flag posts that don’t meet community guidelines. The owner at the document level would have the ability to update and delete this post, but anyone who is on the moderator Team would also have the ability to delete the post, something that is normally restricted to only the owner of the post. We can also change which users have these permissions at any point by adding and removing users and updating the group-level permissions.
 
 
@@ -30,7 +32,7 @@ Teams and labels accomplish much of the same thing, however there are some techn
 
 Teams are designed to group users together, allowing for shared access to resources within an application. For example, in an app like Discord or Slack, we can create Teams and invite users to be a part of the Team (Ex: Server or chat room).
 
-![Labels vs Teams](/images/blog/labels 6.png)
+![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png)
 
 One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. 
 
@@ -40,7 +42,7 @@ This allows for granular control over what each Team member can do based on thei
 
 Labels are essentially custom tags that you can assign to a user. They act as custom-defined markers or classifications that we can place on specific users.
 
-![Labels vs Teams](/images/blog/labels 1.png)
+![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png)
 
 Just like Teams, we can grant permissions to specific Labels. Labels are attached to individual user accounts and are used to categorize users on a one-to-one basis. Labels can be used in a similar manner to Teams but are a more lightweight and flexible way to manage users and permissions.
 
@@ -54,7 +56,7 @@ This would make Labels a great option for managing which users can view restrict
 
 ## How permissions work with Teams and labels
 
-![Labels vs Teams](/images/blog/labels 4.png)
+![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png)
 
 Here’s the process of granting users permission to resources through Teams and labels. Be sure to pay attention to step 3 in the process. There’s a slight difference in how users connect to Teams Vs. labels.
 
diff --git a/labels 1.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png
similarity index 100%
rename from labels 1.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png
diff --git a/labels 2.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels2.png
similarity index 100%
rename from labels 2.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels2.png
diff --git a/labels 3.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png
similarity index 100%
rename from labels 3.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png
diff --git a/labels 4.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png
similarity index 100%
rename from labels 4.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png
diff --git a/labels 5.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels5.png
similarity index 100%
rename from labels 5.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels5.png
diff --git a/labels 6.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png
similarity index 100%
rename from labels 6.png
rename to static/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png
diff --git a/static/images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png b/static/images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb59ba815865a5769c7b5bd8b605e39714213136
GIT binary patch

From 6dca5c5a50c086ceb55776212d983036694885c7 Mon Sep 17 00:00:00 2001
From: divanov11 <ivanovsin11@gmail.com>
Date: Mon, 15 Jan 2024 20:09:34 -0800
Subject: [PATCH 09/18] Updated section headlines

---
 .../+page.markdoc                                            | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
index 37411d7fc7c..6be16f31412 100644
--- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
+++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc
@@ -81,12 +81,13 @@ Let's start with creating a new Team, adding members, and assigning roles to tho
 
 That’s it for creating a Team and adding members from the appwrite console. Now you can assign document, storage, and function permissions to your Teams. As an example, for collection level permissions, you can go to the “settings'' tab in a collection, and in the “permissions” section, choose “Select Teams'' to give permissions to an entire Team or “Custom permissions” if you want to assign permission to only users with a particular role within the Team. 
 
-Labels
+## Labels
 
 Labels can also be assigned from the auth tab. To assign a label select a user and add a label in the “Labels” section.
 
 Assigning permissions to labels is the same as it is for Teams, only you would choose the “Label” section in the drop down menu.
-SDK Usage
+
+### SDK Usage
 
 From a technical perspective, it’s important to note a key difference in how we use Teams and Labels when it comes to the SDK.
 

From e212c3b14d2e5a3f265a13742db630d1d0a26782 Mon Sep 17 00:00:00 2001
From: divanov11 <ivanovsin11@gmail.com>
Date: Fri, 19 Jan 2024 14:39:44 -0800
Subject: [PATCH 10/18] Cors article added

---
 src/routes/blog/post/cors-error/+page.markdoc |  64 ++++++++++++++++++
 static/images/blog/cors-error/cors_cover.png  | Bin 0 -> 1066956 bytes
 static/images/blog/cors-error/cors_error.png  | Bin 0 -> 177132 bytes
 .../images/blog/cors-error/cors_example.png   | Bin 0 -> 72950 bytes
 4 files changed, 64 insertions(+)
 create mode 100644 src/routes/blog/post/cors-error/+page.markdoc
 create mode 100644 static/images/blog/cors-error/cors_cover.png
 create mode 100644 static/images/blog/cors-error/cors_error.png
 create mode 100644 static/images/blog/cors-error/cors_example.png

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
new file mode 100644
index 00000000000..5a29760f061
--- /dev/null
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -0,0 +1,64 @@
+---
+layout: post
+title: Solving CORS errors with appwrite
+description: Understanding why you are getting CORS error when sending request to an appwrite backend, and how to debug
+date: 2024-01-16
+cover: /images/blog/cors-error/cors_cover.png
+timeToRead: 3
+author: dennis-ivy
+category: engineering
+featured: false
+---
+
+I want to address an issue I've seen popping up on stack overflow and the appwrite discord server and address some of the reasons you may be getting this error, and walk you through some of the steps you can take to try and resolve it as well.
+
+The error message you'll see in your console when trying to make a request to an appwrite backend will look something like this: `Access blocked by CORS policy`
+
+## **Understanding CORS**
+
+Before we start debugging this, let's talk about what CORS error is.
+
+Without diving deep into the topic, CORS (Cross-Origin Resource Sharing ) is a mechanism which allows a server to specify which origins can access it. By origins I mean URL. Basically, site A, our server sitting at `myapi.com` won't allow request coming from site B, our client sitting at `myfrontend.com`.
+
+This happens because our server has not added site B, `myfrontend.com` to it's list of allowed origins, therefor any request coming from a URL that is not listed in our servers allowed origins will be rejected by our CORS policy. The solution in this case would be to simply add `myfrontend.com` to the list of allowed origins.
+
+![CORS error appwrite](/images/blog/cors-error/cors_example.png)
+
+CORS is crucial because it provides a secure way to make request accross different origins. Without CORS, any website would be able to make request to our server, and would lead to major problems.
+
+
+## Why you are getting a CORS error
+
+Now let's try to figure this all out in the context of appwrite and why you may be getting this error. At the moment I have this listed at 3 main reasons, if more arise I will update the article to include them.
+
+1. Origin not set in console
+2. Origin is set incorrectly
+3. Bad ID on request
+
+### 1 - Origin not set in console
+
+First, you'll want to check your appwrite console to make sure you have added a hostname and are making a request from the correct hostname. Make sure you have added a platform in your appwrite console by going to the "overview" tab, select your platform (Add one if you have not yet) and then ensure you have added a hostname.
+
+A hostname is simply the domain you will be making request from. In development this will most likely be `localhost`, no need to add a port number or protocal here.
+
+### 2 - Origin is set incorrectly
+
+The second issue I often see is a hostname thats not properly configured. This is usually a typo, or more often a mistake made when switching between a local domain and live domain. Developers will often deploy their website and wonder why they are getting this error, only to find they still have their hostname set as localhost.
+
+So if you find this is why you were getting a CORS error, you have a few ways of solving this.
+
+1. Update hostname each time you switch between localhost and live url. This is not ideal since you would be switching back and fourth constantly
+2. Add a wildcard to allow request from any origin - Not secure
+3. Add multiple origins - This can be done by adding another "platform" and simply specifying the second and third origins as you add them. - Recommended
+
+### 3 - Incorrect ID on request
+
+This one happens because of a improperly configured request, such as a typo when specifying a project ID. For example, when using the `listDocuments` method, if the project ID is set incorrectly when the client was initialized, you will receive a CORS error.
+
+Without diving into the details about how CORS works, the problem occurs when the browser tries to check if the origin is allowed. The request returns a 40X response so the entire CORS check fails.
+
+### Other things to consider
+
+In most cases the issues people face have to do with one of the above reasons listed and can be solved with the given suggestions. However, if you are still running into issues I’ll keep an ongoing list of other possibilities and things to check for. 
+
+- Disabled CORS in browser.  (I’ve seen people have this issue with browser extensions)
diff --git a/static/images/blog/cors-error/cors_cover.png b/static/images/blog/cors-error/cors_cover.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d52a4eef25263eb99a0036e991190f6213b5f8d
GIT binary patch
diff --git a/static/images/blog/cors-error/cors_error.png b/static/images/blog/cors-error/cors_error.png
new file mode 100644
index 0000000000000000000000000000000000000000..10b44578610004950a5ee037265a4296ac8c0674
GIT binary patch
diff --git a/static/images/blog/cors-error/cors_example.png b/static/images/blog/cors-error/cors_example.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ce46ee4a174b2309347a13e3fadc8aa2185a686
GIT binary patch

From 49974044061c50b67377d8815ec888e2b4789e80 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Tue, 23 Jan 2024 08:28:53 +0100
Subject: [PATCH 11/18] updated CORS blog

---
 src/routes/blog/post/cors-error/+page.markdoc | 43 +++++++++++--------
 1 file changed, 26 insertions(+), 17 deletions(-)

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
index 5a29760f061..6e2fdb57d8f 100644
--- a/src/routes/blog/post/cors-error/+page.markdoc
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -1,7 +1,7 @@
 ---
 layout: post
-title: Solving CORS errors with appwrite
-description: Understanding why you are getting CORS error when sending request to an appwrite backend, and how to debug
+title: Solving CORS errors with Appwrite
+description: Understanding why you are getting CORS error when sending a request to an appwrite backend and how to debug.
 date: 2024-01-16
 cover: /images/blog/cors-error/cors_cover.png
 timeToRead: 3
@@ -12,53 +12,62 @@ featured: false
 
 I want to address an issue I've seen popping up on stack overflow and the appwrite discord server and address some of the reasons you may be getting this error, and walk you through some of the steps you can take to try and resolve it as well.
 
-The error message you'll see in your console when trying to make a request to an appwrite backend will look something like this: `Access blocked by CORS policy`
+The error message you'll see in your console when trying to make a request to an Appwrite backend will look something like this: `Access blocked by CORS policy.`
 
 ## **Understanding CORS**
 
 Before we start debugging this, let's talk about what CORS error is.
 
-Without diving deep into the topic, CORS (Cross-Origin Resource Sharing ) is a mechanism which allows a server to specify which origins can access it. By origins I mean URL. Basically, site A, our server sitting at `myapi.com` won't allow request coming from site B, our client sitting at `myfrontend.com`.
+Without diving deep into the topic, CORS (Cross-Origin Resource Sharing ) is a mechanism that allows a server to specify which origins can access it. By origins, I mean URLs. Basically, site A, our server sitting at `myapi.com` won't allow request coming from site B, our client sitting at `myfrontend.com`.
 
-This happens because our server has not added site B, `myfrontend.com` to it's list of allowed origins, therefor any request coming from a URL that is not listed in our servers allowed origins will be rejected by our CORS policy. The solution in this case would be to simply add `myfrontend.com` to the list of allowed origins.
+This happens because our server has not added site B, `myfrontend.com` to its list of allowed origins therefore, any request coming from a URL that is not listed in our server's allowed origins will be rejected by our CORS policy. The solution in this case would be to simply add `myfrontend.com` to the list of allowed origins.
 
 ![CORS error appwrite](/images/blog/cors-error/cors_example.png)
 
-CORS is crucial because it provides a secure way to make request accross different origins. Without CORS, any website would be able to make request to our server, and would lead to major problems.
+CORS is crucial because it provides a secure way to make requests across different origins. Without CORS, any website would be able to make requests to our server, and this would lead to major problems.
 
 
 ## Why you are getting a CORS error
 
-Now let's try to figure this all out in the context of appwrite and why you may be getting this error. At the moment I have this listed at 3 main reasons, if more arise I will update the article to include them.
+Now let's try to figure this all out in the context of Appwrite and why you may be getting this error. Currently, I have listed three main reasons. If more arise, I will update the article to include them.
 
-1. Origin not set in console
+1. Origin not set in Console
 2. Origin is set incorrectly
 3. Bad ID on request
 
-### 1 - Origin not set in console
+### 1 - Origin not set in Console
 
-First, you'll want to check your appwrite console to make sure you have added a hostname and are making a request from the correct hostname. Make sure you have added a platform in your appwrite console by going to the "overview" tab, select your platform (Add one if you have not yet) and then ensure you have added a hostname.
+First, you'll want to check your Appwrite Console to make sure you have added a hostname and are making a request from the correct hostname. Make sure you have added a platform in your Appwrite console by going to the "overview" tab, select your platform (Add one if you have not yet), and then ensure you have added a hostname.
 
-A hostname is simply the domain you will be making request from. In development this will most likely be `localhost`, no need to add a port number or protocal here.
+A hostname is simply the domain you will be making the request from. In development, this will most likely be `localhost`. No need to add a port number or protocol here.
 
 ### 2 - Origin is set incorrectly
 
-The second issue I often see is a hostname thats not properly configured. This is usually a typo, or more often a mistake made when switching between a local domain and live domain. Developers will often deploy their website and wonder why they are getting this error, only to find they still have their hostname set as localhost.
+The second issue I often see is a hostname that is not properly configured. This is usually a typo or, more often, a mistake made when switching between a local domain and live domain. Developers will often deploy their website and wonder why they are getting this error, only to find they still have their hostname set as localhost.
 
 So if you find this is why you were getting a CORS error, you have a few ways of solving this.
 
-1. Update hostname each time you switch between localhost and live url. This is not ideal since you would be switching back and fourth constantly
-2. Add a wildcard to allow request from any origin - Not secure
+1. Update hostname each time you switch between localhost and live URL. This is not ideal since you would be switching back and forth constantly
+2. Add a wildcard to allow requests from any origin - Not secure
 3. Add multiple origins - This can be done by adding another "platform" and simply specifying the second and third origins as you add them. - Recommended
 
 ### 3 - Incorrect ID on request
 
-This one happens because of a improperly configured request, such as a typo when specifying a project ID. For example, when using the `listDocuments` method, if the project ID is set incorrectly when the client was initialized, you will receive a CORS error.
+This one happens because of an improperly configured request, such as a typo when specifying a project ID. For example, when using the `listDocuments` method, if the project ID is set incorrectly when the client is initialized, you will receive a CORS error.
 
-Without diving into the details about how CORS works, the problem occurs when the browser tries to check if the origin is allowed. The request returns a 40X response so the entire CORS check fails.
+Without diving into the details about how CORS works, the problem occurs when the browser tries to check if the origin is allowed. The request returns a 40X response, so the entire CORS check fails.
 
 ### Other things to consider
 
-In most cases the issues people face have to do with one of the above reasons listed and can be solved with the given suggestions. However, if you are still running into issues I’ll keep an ongoing list of other possibilities and things to check for. 
+In most cases, the issues people face have to do with one of the above reasons listed and can be solved with the given suggestions. However, if you are still running into issues, I’ll keep an ongoing list of other possibilities and things to check for. 
 
 - Disabled CORS in browser.  (I’ve seen people have this issue with browser extensions)
+
+### Aditional resources
+Visit our documentation, Discord server, YouTube channel, or Threads page to find more resources on this topic.
+
+- [Docs](https://appwrite.io/docs/advanced/security/abuse-protection/)
+- [Appwrite Discord server](appwrite.io/discord)
+- [YouTube](https://www.youtube.com/watch?v=n3r81Hr-6bw)
+- [Threads](appwrite.io/threads)
+

From 245852e4d52e3e9465d76e2e2bad6ba0db81e4a2 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Tue, 23 Jan 2024 11:40:26 +0100
Subject: [PATCH 12/18] Update src/routes/blog/post/cors-error/+page.markdoc

Co-authored-by: Bradley Schofield <ionicisere@gmail.com>
---
 src/routes/blog/post/cors-error/+page.markdoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
index 6e2fdb57d8f..e619e31b098 100644
--- a/src/routes/blog/post/cors-error/+page.markdoc
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -67,7 +67,7 @@ In most cases, the issues people face have to do with one of the above reasons l
 Visit our documentation, Discord server, YouTube channel, or Threads page to find more resources on this topic.
 
 - [Docs](https://appwrite.io/docs/advanced/security/abuse-protection/)
-- [Appwrite Discord server](appwrite.io/discord)
+- [Appwrite Discord server](https://appwrite.io/discord)
 - [YouTube](https://www.youtube.com/watch?v=n3r81Hr-6bw)
 - [Threads](appwrite.io/threads)
 

From c0c8ef5ee6d9eceb1d3fca7411d11a40454e7da1 Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Tue, 23 Jan 2024 11:40:33 +0100
Subject: [PATCH 13/18] Update src/routes/blog/post/cors-error/+page.markdoc

Co-authored-by: Bradley Schofield <ionicisere@gmail.com>
---
 src/routes/blog/post/cors-error/+page.markdoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
index e619e31b098..39c2d155ee9 100644
--- a/src/routes/blog/post/cors-error/+page.markdoc
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -69,5 +69,5 @@ Visit our documentation, Discord server, YouTube channel, or Threads page to fin
 - [Docs](https://appwrite.io/docs/advanced/security/abuse-protection/)
 - [Appwrite Discord server](https://appwrite.io/discord)
 - [YouTube](https://www.youtube.com/watch?v=n3r81Hr-6bw)
-- [Threads](appwrite.io/threads)
+- [Threads](https://appwrite.io/threads)
 

From ddcf533d161179ab0471f096bd823023d943d29a Mon Sep 17 00:00:00 2001
From: Laura Du Ry <123562732+LauraDuRy@users.noreply.github.com>
Date: Fri, 26 Jan 2024 13:07:21 +0100
Subject: [PATCH 14/18] Update +page.markdoc

---
 src/routes/blog/post/cors-error/+page.markdoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
index 39c2d155ee9..e2c7e748f0b 100644
--- a/src/routes/blog/post/cors-error/+page.markdoc
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -68,6 +68,6 @@ Visit our documentation, Discord server, YouTube channel, or Threads page to fin
 
 - [Docs](https://appwrite.io/docs/advanced/security/abuse-protection/)
 - [Appwrite Discord server](https://appwrite.io/discord)
-- [YouTube](https://www.youtube.com/watch?v=n3r81Hr-6bw)
+- [YouTube](https://www.youtube.com/watch?v=oEpRh9H5l5g)
 - [Threads](https://appwrite.io/threads)
 

From 0e37aa3e9dd7601d4efec33a4b2d6f0d6cae75d5 Mon Sep 17 00:00:00 2001
From: "Vincent (Wen Yu) Ge" <wenyu1999@hotmail.com>
Date: Tue, 30 Jan 2024 16:23:52 +0000
Subject: [PATCH 15/18] Fix grammar + formatting in CORS blog

---
 src/routes/blog/post/cors-error/+page.markdoc | 67 ++++++++++++-------
 1 file changed, 42 insertions(+), 25 deletions(-)

diff --git a/src/routes/blog/post/cors-error/+page.markdoc b/src/routes/blog/post/cors-error/+page.markdoc
index e2c7e748f0b..0de68b7aad9 100644
--- a/src/routes/blog/post/cors-error/+page.markdoc
+++ b/src/routes/blog/post/cors-error/+page.markdoc
@@ -1,7 +1,7 @@
 ---
 layout: post
 title: Solving CORS errors with Appwrite
-description: Understanding why you are getting CORS error when sending a request to an appwrite backend and how to debug.
+description: Understanding why you are getting CORS error when sending a request to an Appwrite backend and how to debug.
 date: 2024-01-16
 cover: /images/blog/cors-error/cors_cover.png
 timeToRead: 3
@@ -10,64 +10,81 @@ category: engineering
 featured: false
 ---
 
-I want to address an issue I've seen popping up on stack overflow and the appwrite discord server and address some of the reasons you may be getting this error, and walk you through some of the steps you can take to try and resolve it as well.
+I want to address an issue I've seen popping up on Stack Overflow and the Appwrite Discord server and address some of the reasons you may be getting this error, then walk you through some of the steps you can take to try and resolve it as well.
 
 The error message you'll see in your console when trying to make a request to an Appwrite backend will look something like this: `Access blocked by CORS policy.`
 
-## **Understanding CORS**
+# Understanding CORS
 
-Before we start debugging this, let's talk about what CORS error is.
+Before we start debugging this, let's talk about what a CORS error is.
 
-Without diving deep into the topic, CORS (Cross-Origin Resource Sharing ) is a mechanism that allows a server to specify which origins can access it. By origins, I mean URLs. Basically, site A, our server sitting at `myapi.com` won't allow request coming from site B, our client sitting at `myfrontend.com`.
+Without diving deep into the topic, CORS (Cross-Origin Resource Sharing ) is a mechanism that allows a server to specify which origins can access it. By origins, I mean URLs. 
 
-This happens because our server has not added site B, `myfrontend.com` to its list of allowed origins therefore, any request coming from a URL that is not listed in our server's allowed origins will be rejected by our CORS policy. The solution in this case would be to simply add `myfrontend.com` to the list of allowed origins.
+Site A, our server sitting at `myapi.com` won't allow request coming from site B, which is our client app sitting at `myfrontend.com`.
 
-![CORS error appwrite](/images/blog/cors-error/cors_example.png)
+This happens because our server has not added site B, `myfrontend.com`, to its list of allowed origins. 
+Any request coming from a URL that is not listed in our server's allowed origins will be rejected by our CORS policy. 
+The solution in this case would be to simply add `myfrontend.com` to the list of allowed origins.
 
-CORS is crucial because it provides a secure way to make requests across different origins. Without CORS, any website would be able to make requests to our server, and this would lead to major problems.
+![CORS error appwrite](/images/blog/cors-error/cors_example.png)
 
+CORS is crucial because it provides a secure way to make requests across different origins. 
+Without CORS, any website would be able to make requests to our server, and this would lead to major problems.
+Imagine a malicious third party making a website `myfr0nt3nd.com` that key logs your user name and password, before making requests to your backend to validate the combination.
 
-## Why you are getting a CORS error
+# Why you are getting a CORS error
 
-Now let's try to figure this all out in the context of Appwrite and why you may be getting this error. Currently, I have listed three main reasons. If more arise, I will update the article to include them.
+Now let's try to figure this all out in the context of Appwrite and why you may be getting this error. 
+I have listed three main reasons. If more arise, I will update the article to include them.
 
 1. Origin not set in Console
 2. Origin is set incorrectly
 3. Bad ID on request
 
-### 1 - Origin not set in Console
+## 1 - Origin not set in Console
 
-First, you'll want to check your Appwrite Console to make sure you have added a hostname and are making a request from the correct hostname. Make sure you have added a platform in your Appwrite console by going to the "overview" tab, select your platform (Add one if you have not yet), and then ensure you have added a hostname.
+First, you'll want to check your Appwrite Console to make sure you have added a hostname and are making a request from the correct hostname. 
+Make sure you have added a platform in your Appwrite console by going to the **Overview** tab, select your platform or adding one if you have none, and then ensure you have added a hostname.
 
 A hostname is simply the domain you will be making the request from. In development, this will most likely be `localhost`. No need to add a port number or protocol here.
 
-### 2 - Origin is set incorrectly
+## 2 - Origin is set incorrectly
 
 The second issue I often see is a hostname that is not properly configured. This is usually a typo or, more often, a mistake made when switching between a local domain and live domain. Developers will often deploy their website and wonder why they are getting this error, only to find they still have their hostname set as localhost.
 
 So if you find this is why you were getting a CORS error, you have a few ways of solving this.
 
-1. Update hostname each time you switch between localhost and live URL. This is not ideal since you would be switching back and forth constantly
+1. Update hostname each time you switch between localhost and live URL. This is not ideal since you would be switching back and forth constantly.
 2. Add a wildcard to allow requests from any origin - Not secure
 3. Add multiple origins - This can be done by adding another "platform" and simply specifying the second and third origins as you add them. - Recommended
 
-### 3 - Incorrect ID on request
+## 3 - Incorrect ID on request
 
-This one happens because of an improperly configured request, such as a typo when specifying a project ID. For example, when using the `listDocuments` method, if the project ID is set incorrectly when the client is initialized, you will receive a CORS error.
+This one happens because of an improperly configured request, such as a typo when specifying a project ID. For example, when using the `listDocuments` method, 
+if the project ID is set incorrectly when the client is initialized, you will receive a CORS error.
 
-Without diving into the details about how CORS works, the problem occurs when the browser tries to check if the origin is allowed. The request returns a 40X response, so the entire CORS check fails.
+Without diving into the details about how CORS works, the problem occurs when the browser tries to check if the origin is allowed. 
+The request returns a `40X` response, so the entire CORS check fails.
 
-### Other things to consider
+## Other things to consider
 
-In most cases, the issues people face have to do with one of the above reasons listed and can be solved with the given suggestions. However, if you are still running into issues, I’ll keep an ongoing list of other possibilities and things to check for. 
+In most cases, the issues people face have to do with one of the above reasons listed and can be solved with the given suggestions. 
+However, if you are still running into issues, I’ll keep an ongoing list of other possibilities and things to check for. 
 
 - Disabled CORS in browser.  (I’ve seen people have this issue with browser extensions)
 
-### Aditional resources
+## Aditional resources
 Visit our documentation, Discord server, YouTube channel, or Threads page to find more resources on this topic.
 
-- [Docs](https://appwrite.io/docs/advanced/security/abuse-protection/)
-- [Appwrite Discord server](https://appwrite.io/discord)
-- [YouTube](https://www.youtube.com/watch?v=oEpRh9H5l5g)
-- [Threads](https://appwrite.io/threads)
-
+{% arrow_link href="https://appwrite.io/docs/advanced/security/abuse-protection/" %}
+Learn more in our documentation
+{% /arrow_link %}
+{% arrow_link href="https://appwrite.io/discord" %}
+Join the Appwrite Discord server
+{% /arrow_link %}
+{% arrow_link href="https://www.youtube.com/watch?v=oEpRh9H5l5g" %}
+Follow the tutorial on YouTube
+{% /arrow_link %}
+{% arrow_link href="https://appwrite.io/threads" %}
+Search past support threads
+{% /arrow_link %}
\ No newline at end of file

From b67dab268be6318efc1f2645e6defbd59865a457 Mon Sep 17 00:00:00 2001
From: divanov11 <ivanovsin11@gmail.com>
Date: Tue, 30 Jan 2024 09:33:22 -0800
Subject: [PATCH 16/18] Updated typo in image

---
 .../images/blog/cors-error/cors_example.png   | Bin 72950 -> 63442 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/static/images/blog/cors-error/cors_example.png b/static/images/blog/cors-error/cors_example.png
index 6ce46ee4a174b2309347a13e3fadc8aa2185a686..ebffc6495c1156688b22480d256f66fb52828770 100644
GIT binary patch

From 643556a09fd05b82921022a8e1d220be179d61da Mon Sep 17 00:00:00 2001
From: "Vincent (Wen Yu) Ge" <wenyu1999@hotmail.com>
Date: Tue, 30 Jan 2024 18:44:37 +0000
Subject: [PATCH 17/18] Update cover image

---
 static/images/blog/cors-error/cors_cover.png  | Bin 1066956 -> 0 bytes
 .../images/blog/cors-error/cors_cover.png.png | Bin 0 -> 3826207 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 static/images/blog/cors-error/cors_cover.png
 create mode 100644 static/images/blog/cors-error/cors_cover.png.png

diff --git a/static/images/blog/cors-error/cors_cover.png b/static/images/blog/cors-error/cors_cover.png
deleted file mode 100644
index 4d52a4eef25263eb99a0036e991190f6213b5f8d..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/static/images/blog/cors-error/cors_cover.png.png b/static/images/blog/cors-error/cors_cover.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..3275425a1e9d1a5a7b83037bf14a637b4788be29
GIT binary patch

From 8609acca0bf1b4efcbed7033feccbf9588a96ef4 Mon Sep 17 00:00:00 2001
From: "Vincent (Wen Yu) Ge" <wenyu1999@hotmail.com>
Date: Tue, 30 Jan 2024 18:47:57 +0000
Subject: [PATCH 18/18] Fix image file extension

---
 .../{cors_cover.png.png => cors_cover.png}          | Bin
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename static/images/blog/cors-error/{cors_cover.png.png => cors_cover.png} (100%)

diff --git a/static/images/blog/cors-error/cors_cover.png.png b/static/images/blog/cors-error/cors_cover.png
similarity index 100%
rename from static/images/blog/cors-error/cors_cover.png.png
rename to static/images/blog/cors-error/cors_cover.png
