🚸 Added more tips about application authorization flow
This commit is contained in:
parent
b87660d78f
commit
bf7b6df692
9 changed files with 793 additions and 149 deletions
|
@ -39,43 +39,65 @@ func init() {
|
|||
}
|
||||
|
||||
var messageKeyToIndex = map[string]int{
|
||||
"Allow": 4,
|
||||
"%sProof of Key Code Exchange%s is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.": 4,
|
||||
"Allow": 8,
|
||||
"Authorize %s": 0,
|
||||
"Authorize application": 1,
|
||||
"Choose your scopes": 2,
|
||||
"Deny": 3,
|
||||
"Error": 6,
|
||||
"How do I fix it?": 7,
|
||||
"Recipient": 10,
|
||||
"Resource": 11,
|
||||
"Send": 12,
|
||||
"Sign In": 8,
|
||||
"TicketAuth": 9,
|
||||
"version": 5,
|
||||
"Deny": 7,
|
||||
"Error": 10,
|
||||
"How do I fix it?": 11,
|
||||
"No scopes is requested: the application will only get your profile URL.": 6,
|
||||
"Recipient": 14,
|
||||
"Resource": 15,
|
||||
"Scopes": 5,
|
||||
"Send": 16,
|
||||
"Sign In": 12,
|
||||
"This client does not use %sPKCE%s!": 3,
|
||||
"This client uses %sPKCE%s with the %s%s%s method.": 2,
|
||||
"TicketAuth": 13,
|
||||
"You will be redirected to %s%s%s": 9,
|
||||
}
|
||||
|
||||
var enIndex = []uint32{ // 14 elements
|
||||
0x00000000, 0x00000010, 0x00000026, 0x00000039,
|
||||
0x0000003e, 0x00000044, 0x0000004c, 0x00000052,
|
||||
0x00000063, 0x0000006b, 0x00000076, 0x00000080,
|
||||
0x00000089, 0x0000008e,
|
||||
} // Size: 80 bytes
|
||||
var enIndex = []uint32{ // 18 elements
|
||||
0x00000000, 0x00000010, 0x00000026, 0x00000067,
|
||||
0x00000090, 0x000001f3, 0x000001fa, 0x00000242,
|
||||
0x00000247, 0x0000024d, 0x00000277, 0x0000027d,
|
||||
0x0000028e, 0x00000296, 0x000002a1, 0x000002ab,
|
||||
0x000002b4, 0x000002b9,
|
||||
} // Size: 96 bytes
|
||||
|
||||
const enData string = "" + // Size: 142 bytes
|
||||
"\x02Authorize %[1]s\x02Authorize application\x02Choose your scopes\x02De" +
|
||||
"ny\x02Allow\x02version\x02Error\x02How do I fix it?\x02Sign In\x02Ticket" +
|
||||
"Auth\x02Recipient\x02Resource\x02Send"
|
||||
const enData string = "" + // Size: 697 bytes
|
||||
"\x02Authorize %[1]s\x02Authorize application\x02This client uses %[1]sPK" +
|
||||
"CE%[2]s with the %[3]s%[4]s%[5]s method.\x02This client does not use %[1" +
|
||||
"]sPKCE%[2]s!\x02%[1]sProof of Key Code Exchange%[2]s is a mechanism that" +
|
||||
" protects against attackers in the middle hijacking your application's a" +
|
||||
"uthentication process. You can still authorize this application without " +
|
||||
"this protection, but you must independently verify the security of this " +
|
||||
"connection. If you have any doubts - stop the process and contact the d" +
|
||||
"evelopers.\x02Scopes\x02No scopes is requested: the application will onl" +
|
||||
"y get your profile URL.\x02Deny\x02Allow\x02You will be redirected to %[" +
|
||||
"1]s%[2]s%[3]s\x02Error\x02How do I fix it?\x02Sign In\x02TicketAuth\x02R" +
|
||||
"ecipient\x02Resource\x02Send"
|
||||
|
||||
var ruIndex = []uint32{ // 14 elements
|
||||
0x00000000, 0x0000001f, 0x0000004d, 0x0000008e,
|
||||
0x0000009f, 0x000000b2, 0x000000bf, 0x000000cc,
|
||||
0x000000ee, 0x000000f9, 0x00000104, 0x00000119,
|
||||
0x00000126, 0x00000139,
|
||||
} // Size: 80 bytes
|
||||
var ruIndex = []uint32{ // 18 elements
|
||||
0x00000000, 0x0000001f, 0x0000004d, 0x000000a1,
|
||||
0x000000d8, 0x00000343, 0x00000352, 0x000003e9,
|
||||
0x000003fa, 0x0000040d, 0x00000451, 0x0000045e,
|
||||
0x00000480, 0x0000048b, 0x00000496, 0x000004ab,
|
||||
0x000004b8, 0x000004cb,
|
||||
} // Size: 96 bytes
|
||||
|
||||
const ruData string = "" + // Size: 313 bytes
|
||||
"\x02Авторизовать %[1]s\x02Авторизовать приложение\x02Выбери предоставляе" +
|
||||
"мые разрешения\x02Отказать\x02Разрешить\x02версия\x02Ошибка\x02Как испр" +
|
||||
"авить это?\x02Войти\x02TicketAuth\x02Получатель\x02Ресурс\x02Отправить"
|
||||
const ruData string = "" + // Size: 1227 bytes
|
||||
"\x02Авторизовать %[1]s\x02Авторизовать приложение\x02Клиент использует %" +
|
||||
"[1]sPKCE%[2]s с методом %[3]s%[4]s%[5]s.\x02Клиент не использует %[1]sPK" +
|
||||
"CE%[2]s!\x02%[1]sProof of Key Code Exchange%[2]s это механизм, защищающи" +
|
||||
"й от злоумышленников, перехватывающих процесс аутентификации вашего при" +
|
||||
"ложения. Вы можете авторизовать данное приложение и без этой защиты, но" +
|
||||
" при этом вы должны самостоятельно проверить безопасность этого соединен" +
|
||||
"ия. Если у вас есть сомнения - прервите процесс и свяжитесь с разработч" +
|
||||
"иками.\x02Области\x02Никакие разрешения не запрашиваются: приложение по" +
|
||||
"лучит только URL вашего профиля.\x02Отказать\x02Разрешить\x02Вы будете " +
|
||||
"перенаправлены на %[1]s%[2]s%[3]s\x02Ошибка\x02Как исправить это?\x02Во" +
|
||||
"йти\x02TicketAuth\x02Получатель\x02Ресурс\x02Отправить"
|
||||
|
||||
// Total table size 615 bytes (0KiB); checksum: 66FB60EC
|
||||
// Total table size 2116 bytes (2KiB); checksum: 848DD07E
|
||||
|
|
|
@ -26,9 +26,115 @@
|
|||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "Choose your scopes",
|
||||
"message": "Choose your scopes",
|
||||
"translation": "Choose your scopes",
|
||||
"id": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"message": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translation": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "CodeChallengeMethod",
|
||||
"string": "%[4]s",
|
||||
"type": "source.toby3d.me/toby3d/auth/internal/domain.CodeChallengeMethod",
|
||||
"underlyingType": "struct{codeChallengeMethod string}",
|
||||
"argNum": 4,
|
||||
"expr": "p.CodeChallengeMethod"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[5]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 5,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"message": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translation": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"message": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translation": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Dfn_idPKCE",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cdfn id=\"PKCE\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Dfn",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/dfn\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "Scopes",
|
||||
"message": "Scopes",
|
||||
"translation": "Scopes",
|
||||
"translatorComment": "Copied from source.",
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "No scopes is requested: the application will only get your profile URL.",
|
||||
"message": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translation": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"fuzzy": true
|
||||
},
|
||||
|
@ -47,10 +153,36 @@
|
|||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "version",
|
||||
"message": "version",
|
||||
"translation": "version",
|
||||
"id": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"message": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translation": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "RedirectURI",
|
||||
"string": "%[2]s",
|
||||
"type": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"underlyingType": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"argNum": 2,
|
||||
"expr": "p.RedirectURI"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
|
|
|
@ -26,9 +26,115 @@
|
|||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "Choose your scopes",
|
||||
"message": "Choose your scopes",
|
||||
"translation": "Choose your scopes",
|
||||
"id": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"message": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translation": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "CodeChallengeMethod",
|
||||
"string": "%[4]s",
|
||||
"type": "source.toby3d.me/toby3d/auth/internal/domain.CodeChallengeMethod",
|
||||
"underlyingType": "struct{codeChallengeMethod string}",
|
||||
"argNum": 4,
|
||||
"expr": "p.CodeChallengeMethod"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[5]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 5,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"message": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translation": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"message": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translation": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Dfn_idPKCE",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cdfn id=\"PKCE\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Dfn",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/dfn\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "Scopes",
|
||||
"message": "Scopes",
|
||||
"translation": "Scopes",
|
||||
"translatorComment": "Copied from source.",
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "No scopes is requested: the application will only get your profile URL.",
|
||||
"message": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translation": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translatorComment": "Copied from source.",
|
||||
"fuzzy": true
|
||||
},
|
||||
|
@ -47,10 +153,36 @@
|
|||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
"id": "version",
|
||||
"message": "version",
|
||||
"translation": "version",
|
||||
"id": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"message": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translation": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translatorComment": "Copied from source.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "RedirectURI",
|
||||
"string": "%[2]s",
|
||||
"type": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"underlyingType": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"argNum": 2,
|
||||
"expr": "p.RedirectURI"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
],
|
||||
"fuzzy": true
|
||||
},
|
||||
{
|
||||
|
|
|
@ -24,9 +24,107 @@
|
|||
"translatorComment": "Заголовок страницы авторизации безымянного приложения"
|
||||
},
|
||||
{
|
||||
"id": "Choose your scopes",
|
||||
"message": "Choose your scopes",
|
||||
"translation": "Выбери предоставляемые разрешения"
|
||||
"id": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"message": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translation": "Клиент использует {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} с методом {Code}{CodeChallengeMethod}{Code_1}.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "CodeChallengeMethod",
|
||||
"string": "%[4]s",
|
||||
"type": "source.toby3d.me/toby3d/auth/internal/domain.CodeChallengeMethod",
|
||||
"underlyingType": "struct{codeChallengeMethod string}",
|
||||
"argNum": 4,
|
||||
"expr": "p.CodeChallengeMethod"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[5]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 5,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"message": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translation": "Клиент не использует {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"message": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translation": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} это механизм, защищающий от злоумышленников, перехватывающих процесс аутентификации вашего приложения. Вы можете авторизовать данное приложение и без этой защиты, но при этом вы должны самостоятельно проверить безопасность этого соединения. Если у вас есть сомнения - прервите процесс и свяжитесь с разработчиками.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Dfn_idPKCE",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cdfn id=\"PKCE\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Dfn",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/dfn\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Scopes",
|
||||
"message": "Scopes",
|
||||
"translation": "Области"
|
||||
},
|
||||
{
|
||||
"id": "No scopes is requested: the application will only get your profile URL.",
|
||||
"message": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translation": "Никакие разрешения не запрашиваются: приложение получит только URL вашего профиля."
|
||||
},
|
||||
{
|
||||
"id": "Deny",
|
||||
|
@ -41,9 +139,35 @@
|
|||
"translatorComment": "Название кнопки продолжения процесса авторизациии приложения"
|
||||
},
|
||||
{
|
||||
"id": "version",
|
||||
"message": "version",
|
||||
"translation": "версия"
|
||||
"id": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"message": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translation": "Вы будете перенаправлены на {Code}{RedirectURI}{Code_1}",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "RedirectURI",
|
||||
"string": "%[2]s",
|
||||
"type": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"underlyingType": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"argNum": 2,
|
||||
"expr": "p.RedirectURI"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Error",
|
||||
|
|
|
@ -24,9 +24,107 @@
|
|||
"translatorComment": "Заголовок страницы авторизации безымянного приложения"
|
||||
},
|
||||
{
|
||||
"id": "Choose your scopes",
|
||||
"message": "Choose your scopes",
|
||||
"translation": "Выбери предоставляемые разрешения"
|
||||
"id": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"message": "This client uses {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} with the {Code}{CodeChallengeMethod}{Code_1} method.",
|
||||
"translation": "Клиент использует {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr} с методом {Code}{CodeChallengeMethod}{Code_1}.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "CodeChallengeMethod",
|
||||
"string": "%[4]s",
|
||||
"type": "source.toby3d.me/toby3d/auth/internal/domain.CodeChallengeMethod",
|
||||
"underlyingType": "struct{codeChallengeMethod string}",
|
||||
"argNum": 4,
|
||||
"expr": "p.CodeChallengeMethod"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[5]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 5,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"message": "This client does not use {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"translation": "Клиент не использует {Abbr_titleProof_of_Key_Code_Exchange}PKCE{Abbr}!",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Abbr_titleProof_of_Key_Code_Exchange",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cabbr title=\"Proof of Key Code Exchange\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Abbr",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/abbr\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"message": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} is a mechanism that protects against attackers in the middle hijacking your application's authentication process. You can still authorize this application without this protection, but you must independently verify the security of this connection. If you have any doubts - stop the process and contact the developers.",
|
||||
"translation": "{Dfn_idPKCE}Proof of Key Code Exchange{Dfn} это механизм, защищающий от злоумышленников, перехватывающих процесс аутентификации вашего приложения. Вы можете авторизовать данное приложение и без этой защиты, но при этом вы должны самостоятельно проверить безопасность этого соединения. Если у вас есть сомнения - прервите процесс и свяжитесь с разработчиками.",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Dfn_idPKCE",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003cdfn id=\"PKCE\"\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "Dfn",
|
||||
"string": "%[2]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 2,
|
||||
"expr": "`\u003c/dfn\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Scopes",
|
||||
"message": "Scopes",
|
||||
"translation": "Области"
|
||||
},
|
||||
{
|
||||
"id": "No scopes is requested: the application will only get your profile URL.",
|
||||
"message": "No scopes is requested: the application will only get your profile URL.",
|
||||
"translation": "Никакие разрешения не запрашиваются: приложение получит только URL вашего профиля."
|
||||
},
|
||||
{
|
||||
"id": "Deny",
|
||||
|
@ -41,9 +139,35 @@
|
|||
"translatorComment": "Название кнопки продолжения процесса авторизациии приложения"
|
||||
},
|
||||
{
|
||||
"id": "version",
|
||||
"message": "version",
|
||||
"translation": "версия"
|
||||
"id": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"message": "You will be redirected to {Code}{RedirectURI}{Code_1}",
|
||||
"translation": "Вы будете перенаправлены на {Code}{RedirectURI}{Code_1}",
|
||||
"placeholders": [
|
||||
{
|
||||
"id": "Code",
|
||||
"string": "%[1]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 1,
|
||||
"expr": "`\u003ccode\u003e`"
|
||||
},
|
||||
{
|
||||
"id": "RedirectURI",
|
||||
"string": "%[2]s",
|
||||
"type": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"underlyingType": "*source.toby3d.me/toby3d/auth/internal/domain.URL",
|
||||
"argNum": 2,
|
||||
"expr": "p.RedirectURI"
|
||||
},
|
||||
{
|
||||
"id": "Code_1",
|
||||
"string": "%[3]s",
|
||||
"type": "string",
|
||||
"underlyingType": "string",
|
||||
"argNum": 3,
|
||||
"expr": "`\u003c/code\u003e`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Error",
|
||||
|
|
|
@ -55,6 +55,35 @@
|
|||
</header>
|
||||
|
||||
<main>
|
||||
<aside>
|
||||
{% if p.CodeChallengeMethod != domain.CodeChallengeMethodUnd && p.CodeChallenge != "" %}
|
||||
<p class="with-icon">
|
||||
<span class="icon"
|
||||
role="img"
|
||||
aria-label="closed lock with key">🔐</span>
|
||||
|
||||
{%= p.T(`This client uses %sPKCE%s with the %s%s%s method.`, `<abbr title="Proof of Key Code Exchange">`,
|
||||
`</abbr>`, `<code>`, p.CodeChallengeMethod, `</code>`) %}
|
||||
</p>
|
||||
{% else %}
|
||||
<details>
|
||||
<summary class="with-icon">
|
||||
<span class="icon"
|
||||
role="img"
|
||||
aria-label="unlock">🔓</span>
|
||||
|
||||
{%= p.T(`This client does not use %sPKCE%s!`, `<abbr title="Proof of Key Code Exchange">`, `</abbr>`) %}
|
||||
</summary>
|
||||
<p>
|
||||
{%= p.T(`%sProof of Key Code Exchange%s is a mechanism that protects against attackers in the middle hijacking `+
|
||||
`your application's authentication process. You can still authorize this application without this protection, `+
|
||||
`but you must independently verify the security of this connection. If you have any doubts - stop the process `+
|
||||
` and contact the developers.`, `<dfn id="PKCE">`, `</dfn>`) %}
|
||||
</p>
|
||||
</details>
|
||||
{% endif %}
|
||||
</aside>
|
||||
|
||||
<form class=""
|
||||
accept-charset="utf-8"
|
||||
action="/authorize/verify"
|
||||
|
@ -83,7 +112,7 @@
|
|||
|
||||
{% if len(p.Scope) > 0 %}
|
||||
<fieldset>
|
||||
<legend>{%= p.T("Choose your scopes") %}</legend>
|
||||
<legend>{%= p.T("Scopes") %}</legend>
|
||||
|
||||
{% for _, scope := range p.Scope %}
|
||||
<div>
|
||||
|
@ -98,6 +127,10 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
{% else %}
|
||||
<aside>
|
||||
<p>{%= p.T(`No scopes is requested: the application will only get your profile URL.`) %}</p>
|
||||
</aside>
|
||||
{% endif %}
|
||||
|
||||
{% if p.CodeChallenge != "" %}
|
||||
|
@ -149,6 +182,10 @@
|
|||
|
||||
{%= p.T("Allow") %}
|
||||
</button>
|
||||
|
||||
<aside>
|
||||
<p>{%= p.T(`You will be redirected to %s%s%s`, `<code>`, p.RedirectURI, `</code>`) %}</p>
|
||||
</aside>
|
||||
</form>
|
||||
</main>
|
||||
{% endfunc %}
|
||||
|
|
|
@ -186,6 +186,59 @@ func (p *AuthorizePage) StreamBody(qw422016 *qt422016.Writer) {
|
|||
</header>
|
||||
|
||||
<main>
|
||||
<aside>
|
||||
`)
|
||||
//line web/authorize.qtpl:59
|
||||
if p.CodeChallengeMethod != domain.CodeChallengeMethodUnd && p.CodeChallenge != "" {
|
||||
//line web/authorize.qtpl:59
|
||||
qw422016.N().S(`
|
||||
<p class="with-icon">
|
||||
<span class="icon"
|
||||
role="img"
|
||||
aria-label="closed lock with key">🔐</span>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:65
|
||||
p.StreamT(qw422016, `This client uses %sPKCE%s with the %s%s%s method.`, `<abbr title="Proof of Key Code Exchange">`,
|
||||
`</abbr>`, `<code>`, p.CodeChallengeMethod, `</code>`)
|
||||
//line web/authorize.qtpl:66
|
||||
qw422016.N().S(`
|
||||
</p>
|
||||
`)
|
||||
//line web/authorize.qtpl:68
|
||||
} else {
|
||||
//line web/authorize.qtpl:68
|
||||
qw422016.N().S(`
|
||||
<details>
|
||||
<summary class="with-icon">
|
||||
<span class="icon"
|
||||
role="img"
|
||||
aria-label="unlock">🔓</span>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:75
|
||||
p.StreamT(qw422016, `This client does not use %sPKCE%s!`, `<abbr title="Proof of Key Code Exchange">`, `</abbr>`)
|
||||
//line web/authorize.qtpl:75
|
||||
qw422016.N().S(`
|
||||
</summary>
|
||||
<p>
|
||||
`)
|
||||
//line web/authorize.qtpl:78
|
||||
p.StreamT(qw422016, `%sProof of Key Code Exchange%s is a mechanism that protects against attackers in the middle hijacking `+
|
||||
`your application's authentication process. You can still authorize this application without this protection, `+
|
||||
`but you must independently verify the security of this connection. If you have any doubts - stop the process `+
|
||||
` and contact the developers.`, `<dfn id="PKCE">`, `</dfn>`)
|
||||
//line web/authorize.qtpl:81
|
||||
qw422016.N().S(`
|
||||
</p>
|
||||
</details>
|
||||
`)
|
||||
//line web/authorize.qtpl:84
|
||||
}
|
||||
//line web/authorize.qtpl:84
|
||||
qw422016.N().S(`
|
||||
</aside>
|
||||
|
||||
<form class=""
|
||||
accept-charset="utf-8"
|
||||
action="/authorize/verify"
|
||||
|
@ -196,203 +249,215 @@ func (p *AuthorizePage) StreamBody(qw422016 *qt422016.Writer) {
|
|||
target="_self">
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:67
|
||||
//line web/authorize.qtpl:96
|
||||
if p.CSRF != nil {
|
||||
//line web/authorize.qtpl:67
|
||||
//line web/authorize.qtpl:96
|
||||
qw422016.N().S(`
|
||||
<input type="hidden"
|
||||
name="_csrf"
|
||||
value="`)
|
||||
//line web/authorize.qtpl:70
|
||||
//line web/authorize.qtpl:99
|
||||
qw422016.E().Z(p.CSRF)
|
||||
//line web/authorize.qtpl:70
|
||||
//line web/authorize.qtpl:99
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line web/authorize.qtpl:71
|
||||
//line web/authorize.qtpl:100
|
||||
}
|
||||
//line web/authorize.qtpl:71
|
||||
//line web/authorize.qtpl:100
|
||||
qw422016.N().S(`
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:73
|
||||
//line web/authorize.qtpl:102
|
||||
for key, val := range map[string]string{
|
||||
"client_id": p.Client.ID.String(),
|
||||
"redirect_uri": p.RedirectURI.String(),
|
||||
"response_type": p.ResponseType.String(),
|
||||
"state": p.State,
|
||||
} {
|
||||
//line web/authorize.qtpl:78
|
||||
//line web/authorize.qtpl:107
|
||||
qw422016.N().S(`
|
||||
<input type="hidden"
|
||||
name="`)
|
||||
//line web/authorize.qtpl:80
|
||||
//line web/authorize.qtpl:109
|
||||
qw422016.E().S(key)
|
||||
//line web/authorize.qtpl:80
|
||||
//line web/authorize.qtpl:109
|
||||
qw422016.N().S(`"
|
||||
value="`)
|
||||
//line web/authorize.qtpl:81
|
||||
//line web/authorize.qtpl:110
|
||||
qw422016.E().S(val)
|
||||
//line web/authorize.qtpl:81
|
||||
//line web/authorize.qtpl:110
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line web/authorize.qtpl:82
|
||||
//line web/authorize.qtpl:111
|
||||
}
|
||||
//line web/authorize.qtpl:82
|
||||
//line web/authorize.qtpl:111
|
||||
qw422016.N().S(`
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:84
|
||||
//line web/authorize.qtpl:113
|
||||
if len(p.Scope) > 0 {
|
||||
//line web/authorize.qtpl:84
|
||||
//line web/authorize.qtpl:113
|
||||
qw422016.N().S(`
|
||||
<fieldset>
|
||||
<legend>`)
|
||||
//line web/authorize.qtpl:86
|
||||
p.StreamT(qw422016, "Choose your scopes")
|
||||
//line web/authorize.qtpl:86
|
||||
//line web/authorize.qtpl:115
|
||||
p.StreamT(qw422016, "Scopes")
|
||||
//line web/authorize.qtpl:115
|
||||
qw422016.N().S(`</legend>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:88
|
||||
//line web/authorize.qtpl:117
|
||||
for _, scope := range p.Scope {
|
||||
//line web/authorize.qtpl:88
|
||||
//line web/authorize.qtpl:117
|
||||
qw422016.N().S(`
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox"
|
||||
name="scope[]"
|
||||
value="`)
|
||||
//line web/authorize.qtpl:93
|
||||
//line web/authorize.qtpl:122
|
||||
qw422016.E().S(scope.String())
|
||||
//line web/authorize.qtpl:93
|
||||
//line web/authorize.qtpl:122
|
||||
qw422016.N().S(`"
|
||||
checked>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:96
|
||||
//line web/authorize.qtpl:125
|
||||
qw422016.E().S(scope.String())
|
||||
//line web/authorize.qtpl:96
|
||||
//line web/authorize.qtpl:125
|
||||
qw422016.N().S(`
|
||||
</label>
|
||||
</div>
|
||||
`)
|
||||
//line web/authorize.qtpl:99
|
||||
//line web/authorize.qtpl:128
|
||||
}
|
||||
//line web/authorize.qtpl:99
|
||||
//line web/authorize.qtpl:128
|
||||
qw422016.N().S(`
|
||||
</fieldset>
|
||||
`)
|
||||
//line web/authorize.qtpl:101
|
||||
//line web/authorize.qtpl:130
|
||||
} else {
|
||||
//line web/authorize.qtpl:130
|
||||
qw422016.N().S(`
|
||||
<aside>
|
||||
<p>`)
|
||||
//line web/authorize.qtpl:132
|
||||
p.StreamT(qw422016, `No scopes is requested: the application will only get your profile URL.`)
|
||||
//line web/authorize.qtpl:132
|
||||
qw422016.N().S(`</p>
|
||||
</aside>
|
||||
`)
|
||||
//line web/authorize.qtpl:134
|
||||
}
|
||||
//line web/authorize.qtpl:101
|
||||
//line web/authorize.qtpl:134
|
||||
qw422016.N().S(`
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:103
|
||||
//line web/authorize.qtpl:136
|
||||
if p.CodeChallenge != "" {
|
||||
//line web/authorize.qtpl:103
|
||||
//line web/authorize.qtpl:136
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line web/authorize.qtpl:104
|
||||
//line web/authorize.qtpl:137
|
||||
for key, val := range map[string]string{
|
||||
"code_challenge": p.CodeChallenge,
|
||||
"code_challenge_method": p.CodeChallengeMethod.String(),
|
||||
} {
|
||||
//line web/authorize.qtpl:107
|
||||
//line web/authorize.qtpl:140
|
||||
qw422016.N().S(`
|
||||
<input type="hidden"
|
||||
name="`)
|
||||
//line web/authorize.qtpl:109
|
||||
//line web/authorize.qtpl:142
|
||||
qw422016.E().S(key)
|
||||
//line web/authorize.qtpl:109
|
||||
//line web/authorize.qtpl:142
|
||||
qw422016.N().S(`"
|
||||
value="`)
|
||||
//line web/authorize.qtpl:110
|
||||
//line web/authorize.qtpl:143
|
||||
qw422016.E().S(val)
|
||||
//line web/authorize.qtpl:110
|
||||
//line web/authorize.qtpl:143
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line web/authorize.qtpl:111
|
||||
//line web/authorize.qtpl:144
|
||||
}
|
||||
//line web/authorize.qtpl:111
|
||||
//line web/authorize.qtpl:144
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line web/authorize.qtpl:112
|
||||
//line web/authorize.qtpl:145
|
||||
}
|
||||
//line web/authorize.qtpl:112
|
||||
//line web/authorize.qtpl:145
|
||||
qw422016.N().S(`
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:114
|
||||
//line web/authorize.qtpl:147
|
||||
if p.Me != nil {
|
||||
//line web/authorize.qtpl:114
|
||||
//line web/authorize.qtpl:147
|
||||
qw422016.N().S(`
|
||||
<input type="hidden"
|
||||
name="me"
|
||||
value="`)
|
||||
//line web/authorize.qtpl:117
|
||||
//line web/authorize.qtpl:150
|
||||
qw422016.E().S(p.Me.String())
|
||||
//line web/authorize.qtpl:117
|
||||
//line web/authorize.qtpl:150
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line web/authorize.qtpl:118
|
||||
//line web/authorize.qtpl:151
|
||||
}
|
||||
//line web/authorize.qtpl:118
|
||||
//line web/authorize.qtpl:151
|
||||
qw422016.N().S(`
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:120
|
||||
//line web/authorize.qtpl:153
|
||||
if len(p.Providers) > 0 {
|
||||
//line web/authorize.qtpl:120
|
||||
//line web/authorize.qtpl:153
|
||||
qw422016.N().S(`
|
||||
<select name="provider"
|
||||
autocomplete
|
||||
required>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:125
|
||||
//line web/authorize.qtpl:158
|
||||
for _, provider := range p.Providers {
|
||||
//line web/authorize.qtpl:125
|
||||
//line web/authorize.qtpl:158
|
||||
qw422016.N().S(`
|
||||
<option value="`)
|
||||
//line web/authorize.qtpl:126
|
||||
//line web/authorize.qtpl:159
|
||||
qw422016.E().S(provider.UID)
|
||||
//line web/authorize.qtpl:126
|
||||
//line web/authorize.qtpl:159
|
||||
qw422016.N().S(`"
|
||||
`)
|
||||
//line web/authorize.qtpl:127
|
||||
//line web/authorize.qtpl:160
|
||||
if provider.UID == "mastodon" {
|
||||
//line web/authorize.qtpl:127
|
||||
//line web/authorize.qtpl:160
|
||||
qw422016.N().S(`selected`)
|
||||
//line web/authorize.qtpl:127
|
||||
//line web/authorize.qtpl:160
|
||||
}
|
||||
//line web/authorize.qtpl:127
|
||||
//line web/authorize.qtpl:160
|
||||
qw422016.N().S(`>
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:129
|
||||
//line web/authorize.qtpl:162
|
||||
qw422016.E().S(provider.Name)
|
||||
//line web/authorize.qtpl:129
|
||||
//line web/authorize.qtpl:162
|
||||
qw422016.N().S(`
|
||||
</option>
|
||||
`)
|
||||
//line web/authorize.qtpl:131
|
||||
//line web/authorize.qtpl:164
|
||||
}
|
||||
//line web/authorize.qtpl:131
|
||||
//line web/authorize.qtpl:164
|
||||
qw422016.N().S(`
|
||||
</select>
|
||||
`)
|
||||
//line web/authorize.qtpl:133
|
||||
//line web/authorize.qtpl:166
|
||||
} else {
|
||||
//line web/authorize.qtpl:133
|
||||
//line web/authorize.qtpl:166
|
||||
qw422016.N().S(`
|
||||
<input type="hidden"
|
||||
name="provider"
|
||||
value="direct">
|
||||
`)
|
||||
//line web/authorize.qtpl:137
|
||||
//line web/authorize.qtpl:170
|
||||
}
|
||||
//line web/authorize.qtpl:137
|
||||
//line web/authorize.qtpl:170
|
||||
qw422016.N().S(`
|
||||
|
||||
<button type="submit"
|
||||
|
@ -400,9 +465,9 @@ func (p *AuthorizePage) StreamBody(qw422016 *qt422016.Writer) {
|
|||
value="deny">
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:143
|
||||
//line web/authorize.qtpl:176
|
||||
p.StreamT(qw422016, "Deny")
|
||||
//line web/authorize.qtpl:143
|
||||
//line web/authorize.qtpl:176
|
||||
qw422016.N().S(`
|
||||
</button>
|
||||
|
||||
|
@ -411,39 +476,47 @@ func (p *AuthorizePage) StreamBody(qw422016 *qt422016.Writer) {
|
|||
value="allow">
|
||||
|
||||
`)
|
||||
//line web/authorize.qtpl:150
|
||||
//line web/authorize.qtpl:183
|
||||
p.StreamT(qw422016, "Allow")
|
||||
//line web/authorize.qtpl:150
|
||||
//line web/authorize.qtpl:183
|
||||
qw422016.N().S(`
|
||||
</button>
|
||||
|
||||
<aside>
|
||||
<p>`)
|
||||
//line web/authorize.qtpl:187
|
||||
p.StreamT(qw422016, `You will be redirected to %s%s%s`, `<code>`, p.RedirectURI, `</code>`)
|
||||
//line web/authorize.qtpl:187
|
||||
qw422016.N().S(`</p>
|
||||
</aside>
|
||||
</form>
|
||||
</main>
|
||||
`)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
}
|
||||
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
func (p *AuthorizePage) WriteBody(qq422016 qtio422016.Writer) {
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
p.StreamBody(qw422016)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
}
|
||||
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
func (p *AuthorizePage) Body() string {
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
p.WriteBody(qb422016)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
qs422016 := string(qb422016.B)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
return qs422016
|
||||
//line web/authorize.qtpl:154
|
||||
//line web/authorize.qtpl:191
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
Head()
|
||||
Lang()
|
||||
Title()
|
||||
T(format string, args ...interface{})
|
||||
T(format message.Reference, args ...any)
|
||||
} %}
|
||||
|
||||
{% code type BaseOf struct {
|
||||
|
@ -104,7 +104,7 @@ en
|
|||
</html>
|
||||
{% endfunc %}
|
||||
|
||||
{% func (p *BaseOf) T(format string, args ...interface{}) %}
|
||||
{%s p.Printer.Sprintf(format, args...) %}
|
||||
{% func (p BaseOf) T(format message.Reference, args ...any) %}
|
||||
{%s= p.Printer.Sprintf(format, args...) %}
|
||||
{% endfunc %}
|
||||
{% endcollapsespace %}
|
||||
|
|
|
@ -54,11 +54,11 @@ type Page interface {
|
|||
//line web/baseof.qtpl:10
|
||||
WriteTitle(qq422016 qtio422016.Writer)
|
||||
//line web/baseof.qtpl:10
|
||||
T(format string, args ...interface{}) string
|
||||
T(format message.Reference, args ...any) string
|
||||
//line web/baseof.qtpl:10
|
||||
StreamT(qw422016 *qt422016.Writer, format string, args ...interface{})
|
||||
StreamT(qw422016 *qt422016.Writer, format message.Reference, args ...any)
|
||||
//line web/baseof.qtpl:10
|
||||
WriteT(qq422016 qtio422016.Writer, format string, args ...interface{})
|
||||
WriteT(qq422016 qtio422016.Writer, format message.Reference, args ...any)
|
||||
//line web/baseof.qtpl:10
|
||||
}
|
||||
|
||||
|
@ -304,18 +304,18 @@ func Template(p Page) string {
|
|||
}
|
||||
|
||||
//line web/baseof.qtpl:107
|
||||
func (p *BaseOf) StreamT(qw422016 *qt422016.Writer, format string, args ...interface{}) {
|
||||
func (p BaseOf) StreamT(qw422016 *qt422016.Writer, format message.Reference, args ...any) {
|
||||
//line web/baseof.qtpl:107
|
||||
qw422016.N().S(` `)
|
||||
//line web/baseof.qtpl:108
|
||||
qw422016.E().S(p.Printer.Sprintf(format, args...))
|
||||
qw422016.N().S(p.Printer.Sprintf(format, args...))
|
||||
//line web/baseof.qtpl:108
|
||||
qw422016.N().S(` `)
|
||||
//line web/baseof.qtpl:109
|
||||
}
|
||||
|
||||
//line web/baseof.qtpl:109
|
||||
func (p *BaseOf) WriteT(qq422016 qtio422016.Writer, format string, args ...interface{}) {
|
||||
func (p BaseOf) WriteT(qq422016 qtio422016.Writer, format message.Reference, args ...any) {
|
||||
//line web/baseof.qtpl:109
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line web/baseof.qtpl:109
|
||||
|
@ -326,7 +326,7 @@ func (p *BaseOf) WriteT(qq422016 qtio422016.Writer, format string, args ...inter
|
|||
}
|
||||
|
||||
//line web/baseof.qtpl:109
|
||||
func (p *BaseOf) T(format string, args ...interface{}) string {
|
||||
func (p BaseOf) T(format message.Reference, args ...any) string {
|
||||
//line web/baseof.qtpl:109
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line web/baseof.qtpl:109
|
||||
|
|
Loading…
Reference in a new issue