From 3175d08626232e85df64bec95fa62aac227e252a Mon Sep 17 00:00:00 2001
From: Daniil Pankratov <mobigod0@gmail.com>
Date: Mon, 28 Dec 2020 11:39:12 +0300
Subject: [PATCH] CLI support for OAuth sources custom icons (#14166)

Co-authored-by: Daniil Pankratov <daniil.pankratov@t-systems.com>
---
 cmd/admin.go                                 | 10 ++++++++++
 docs/content/doc/usage/command-line.en-us.md |  4 +++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/cmd/admin.go b/cmd/admin.go
index 25faaae188..b4e0c3cb5e 100644
--- a/cmd/admin.go
+++ b/cmd/admin.go
@@ -282,6 +282,11 @@ var (
 			Value: "",
 			Usage: "Use a custom Email URL (option for GitHub)",
 		},
+		cli.StringFlag{
+			Name:  "icon-url",
+			Value: "",
+			Usage: "Custom icon URL for OAuth2 login source",
+		},
 	}
 
 	microcmdAuthUpdateOauth = cli.Command{
@@ -606,6 +611,7 @@ func parseOAuth2Config(c *cli.Context) *models.OAuth2Config {
 		ClientSecret:                  c.String("secret"),
 		OpenIDConnectAutoDiscoveryURL: c.String("auto-discover-url"),
 		CustomURLMapping:              customURLMapping,
+		IconURL:                       c.String("icon-url"),
 	}
 }
 
@@ -658,6 +664,10 @@ func runUpdateOauth(c *cli.Context) error {
 		oAuth2Config.OpenIDConnectAutoDiscoveryURL = c.String("auto-discover-url")
 	}
 
+	if c.IsSet("icon-url") {
+		oAuth2Config.IconURL = c.String("icon-url")
+	}
+
 	// update custom URL mapping
 	var customURLMapping = &oauth2.CustomURLMapping{}
 
diff --git a/docs/content/doc/usage/command-line.en-us.md b/docs/content/doc/usage/command-line.en-us.md
index 98d047fb48..192eaa2c5a 100644
--- a/docs/content/doc/usage/command-line.en-us.md
+++ b/docs/content/doc/usage/command-line.en-us.md
@@ -114,6 +114,7 @@ Admin operations:
         - `--custom-token-url`: Use a custom Token URL (option for GitLab/GitHub).
         - `--custom-profile-url`: Use a custom Profile URL (option for GitLab/GitHub).
         - `--custom-email-url`: Use a custom Email URL (option for GitHub).
+        - `--icon-url`: Custom icon URL for OAuth2 login source.
       - Examples:
         - `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE`
     - `update-oauth`:
@@ -129,6 +130,7 @@ Admin operations:
         - `--custom-token-url`: Use a custom Token URL (option for GitLab/GitHub).
         - `--custom-profile-url`: Use a custom Profile URL (option for GitLab/GitHub).
         - `--custom-email-url`: Use a custom Email URL (option for GitHub).
+        - `--icon-url`: Custom icon URL for OAuth2 login source.
       - Examples:
         - `gitea admin auth update-oauth --id 1 --name external-github-updated`
     - `add-ldap`: Add new LDAP (via Bind DN) authentication source
@@ -465,4 +467,4 @@ Restore-repo restore repository data from disk dir:
   - `--repo_dir dir`, `-r dir`: Repository dir path to restore from
   - `--owner_name lunny`: Restore destination owner name
   - `--repo_name tango`: Restore destination repository name
-  - `--units <units>`: Which items will be restored, one or more units should be separated as comma. wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units.
\ No newline at end of file
+  - `--units <units>`: Which items will be restored, one or more units should be separated as comma. wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units.