openapi changes
This commit is contained in:
+156
-60
@@ -21,6 +21,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
CognitoAuthScopes = "cognitoAuth.Scopes"
|
||||
PlaceholderAuthScopes = "placeholderAuth.Scopes"
|
||||
)
|
||||
|
||||
@@ -350,6 +351,15 @@ type TooManyRequests = ErrorMessage
|
||||
// Unauthorized Description of error
|
||||
type Unauthorized = ErrorMessage
|
||||
|
||||
// LoginCallbackParams defines parameters for LoginCallback.
|
||||
type LoginCallbackParams struct {
|
||||
// Code Authorization code from Cognito
|
||||
Code string `form:"code" json:"code"`
|
||||
|
||||
// State State parameter for CSRF protection
|
||||
State string `form:"state" json:"state"`
|
||||
}
|
||||
|
||||
// CreateClientJSONRequestBody defines body for CreateClient for application/json ContentType.
|
||||
type CreateClientJSONRequestBody = ClientCreate
|
||||
|
||||
@@ -403,6 +413,18 @@ type ServerInterface interface {
|
||||
// Check export state.
|
||||
// (GET /export/{id})
|
||||
ExportState(ctx echo.Context, id ExportID) error
|
||||
// Get the home page menu
|
||||
// (GET /home)
|
||||
GetHomePage(ctx echo.Context) error
|
||||
// Login to the application
|
||||
// (GET /login)
|
||||
Login(ctx echo.Context) error
|
||||
// OAuth2 callback endpoint
|
||||
// (GET /login-callback)
|
||||
LoginCallback(ctx echo.Context, params LoginCallbackParams) error
|
||||
// Logout from the application
|
||||
// (GET /logout)
|
||||
Logout(ctx echo.Context) error
|
||||
// List queries
|
||||
// (GET /query)
|
||||
ListQueries(ctx echo.Context) error
|
||||
@@ -598,6 +620,64 @@ func (w *ServerInterfaceWrapper) ExportState(ctx echo.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// GetHomePage converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) GetHomePage(ctx echo.Context) error {
|
||||
var err error
|
||||
|
||||
ctx.Set(PlaceholderAuthScopes, []string{})
|
||||
|
||||
// Invoke the callback with all the unmarshaled arguments
|
||||
err = w.Handler.GetHomePage(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
// Login converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) Login(ctx echo.Context) error {
|
||||
var err error
|
||||
|
||||
ctx.Set(CognitoAuthScopes, []string{"openid", "email", "profile"})
|
||||
|
||||
// Invoke the callback with all the unmarshaled arguments
|
||||
err = w.Handler.Login(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
// LoginCallback converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) LoginCallback(ctx echo.Context) error {
|
||||
var err error
|
||||
|
||||
// Parameter object where we will unmarshal all parameters from the context
|
||||
var params LoginCallbackParams
|
||||
// ------------- Required query parameter "code" -------------
|
||||
|
||||
err = runtime.BindQueryParameter("form", true, true, "code", ctx.QueryParams(), ¶ms.Code)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter code: %s", err))
|
||||
}
|
||||
|
||||
// ------------- Required query parameter "state" -------------
|
||||
|
||||
err = runtime.BindQueryParameter("form", true, true, "state", ctx.QueryParams(), ¶ms.State)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter state: %s", err))
|
||||
}
|
||||
|
||||
// Invoke the callback with all the unmarshaled arguments
|
||||
err = w.Handler.LoginCallback(ctx, params)
|
||||
return err
|
||||
}
|
||||
|
||||
// Logout converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) Logout(ctx echo.Context) error {
|
||||
var err error
|
||||
|
||||
ctx.Set(PlaceholderAuthScopes, []string{})
|
||||
|
||||
// Invoke the callback with all the unmarshaled arguments
|
||||
err = w.Handler.Logout(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
// ListQueries converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) ListQueries(ctx echo.Context) error {
|
||||
var err error
|
||||
@@ -712,6 +792,10 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
|
||||
router.GET(baseURL+"/client/:id/status", wrapper.GetStatusByClientId)
|
||||
router.GET(baseURL+"/document/:id", wrapper.GetDocument)
|
||||
router.GET(baseURL+"/export/:id", wrapper.ExportState)
|
||||
router.GET(baseURL+"/home", wrapper.GetHomePage)
|
||||
router.GET(baseURL+"/login", wrapper.Login)
|
||||
router.GET(baseURL+"/login-callback", wrapper.LoginCallback)
|
||||
router.GET(baseURL+"/logout", wrapper.Logout)
|
||||
router.GET(baseURL+"/query", wrapper.ListQueries)
|
||||
router.POST(baseURL+"/query", wrapper.CreateQuery)
|
||||
router.GET(baseURL+"/query/:id", wrapper.GetQuery)
|
||||
@@ -723,66 +807,78 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"H4sIAAAAAAAC/+xcW3PbRrL+K1M4eTrhndT11KlaRnIc7tqyI8lb2bK0rCHQJCcLYKiZgWRGxf++NTfc",
|
||||
"QYI0qeSBVX4QiLl093R/3dPd8Kvj0mBBQwgFdy5fnTlgD5j68xYL+EACIuSDB9xlZCEIDZ1L9Qr58h0i",
|
||||
"4ZSyAMsXiIRIP6AHR739vxcSevTl/wUJoKn/fnCchgPfcLDwwbl0up2OHdTtOA2Hu3MIsNyxdMypHBPg",
|
||||
"bx8gnIm5c9nvNZwFFgKYJOvfXzvNi8cf7WD99IPTcMRyIRfigpFw5qxWKzmL4QCE4fXKJxCK0XWR1fs5",
|
||||
"IFe9RaPrltNwiPx1gcXcaTghDuS6xHMaDoOniDDwnEvBIkhz8gODqXPp/E87EXVbv+XteGNJ0zV1o2AN",
|
||||
"HZ55fxBKUptLWt59W1BWSQmotwehI95YUvFrBGxZRcToGtEpEnNAT3LY/kmxuyuFYcAXNOSg9GUUSpXD",
|
||||
"/jvGKJM/uDQUECpTwYuFT1xlEe3fuaT2tS7rcrWPwDmegd40y7TdFXFgz8AQyPGS7SqrLdvMjG0nA9VO",
|
||||
"o/AZ+8S7hacIuHhDltS2iOl90YR6yz1xdE/pRxwuDUf8zVi6NYqCogUNkaAUBThcWg75HrhrOLcg2LI5",
|
||||
"nApgRdu4iYIJMGkbHFwaehxNYEoZIMGWJJwhPMMkbKVhuNvrpG1Cg7i0nVD0expxSRAFzuX56aDTaTgB",
|
||||
"CfVzJ8ZWEgqYAZMCWTWcLyGOxJwy8oe0ubcW/MscQhSlSNiLRq2siFIe4wqHd8vQLZ7BSAOT8RyEI+z7",
|
||||
"9EVJ3xXkGRBfhi5PXNOEUh9wKM/WrMwACygHvgWjC2CCAJf+FrlyKKHqSJNXcirx6vsfC5h1xt/IkRoU",
|
||||
"La5+1UCr1niM2aKT38EVCVcbPCx8MwCn1koigOFwmPP7pxm/3yrz8smeP1FvuXZf4n2f7IqSqBbBjZFy",
|
||||
"JTFKhFnuGQjICqB3soUE7gQWES9uercAl0ylGkld5WqUhA1sSFEYEUo7/+qMbsZ3/7q5chrOzad79ee7",
|
||||
"69TD6OZ9iudyAsqPYWj5NvunA0otu+LZ8JihzedjmM+fkVmi+py+LLw6BijmWKAAL9FEAr6cUqJLLg7H",
|
||||
"3ODEZootqOxmkkV2qAf/BMaJxtqSsBK4lApyqQfoWY+UPKTdwOkg7QYuer1+/6zX6Z+enwzOzk47GafQ",
|
||||
"LToFSYXvgytoib+KX6GAeuAXxachc/ycMLFOHpbXVcPRmjXeDganBHxvs3JZon/Ww1cNx8cCuNiBTCO5",
|
||||
"sStdALC6K6QPNrWKgG9ipyVyFpIIL5ZJNakV2xeE0sgfZqkBZmRbrrSKorwnVC7XTi7qUS1ryuytrarh",
|
||||
"qAtGDT1KbgxZWRpMj5fZzHW1m6CRWETCCEAu3NrNNeQUuFrKEpOLoiUCgi2tRGkp/jbSMxWdhizMGF5m",
|
||||
"qLqDkrzDZ7z0KfbUWSuwVQEVuqo+8p2hY2cU+OsYc0HDrqmrgW6jV8sFAXvyZn9SONpIKH4sl4pKfGzI",
|
||||
"uSQyKJHI9/mZSrvDoacM7xn7EcQIZ0lKB4mvlqJlN7ZyPS0hdtlzLge95LFvsyH2hxPn8mu30Wv0H8u0",
|
||||
"Z475fBN/v8gxtU46l24qnFza+6idY4GtO8ONmTMd6Sexdad7cXLe8abNSX963jzrD86bF3jSbXbh5GTS",
|
||||
"n3bPwTtLh0JRpCjKXUUK4GrpuYuCALPlBqK4HrVWxd5W+mq3MkFn7uAFrq6TJwkhKj+V1dLATnWWNEJB",
|
||||
"xAUioetHHiCM7MtVnvmgakNDCdK/TqTSK0eFIw7Zg463m8nbdwBoRqmXvmzs4ERzkrNUlspNZTWvQWDi",
|
||||
"8/WOzeRWBSOzGTBk8457Qh0dPYx9qlMw5Zpp30rH/zIn7lxJ1RD2B1mgKfEBvRDfl9eeKY3CnFnx/mW7",
|
||||
"jdvDtp7T7nV6J51et9+W9tNy+XNO2p3BeUbcan7rR/nPrKCS+a/nq3brx4cHuUJpUFPvYqgPo+JimAae",
|
||||
"NZfEWvnxCrSB5sA76TbPun23eXEO0BycDuC8f97tTrv9HdAmw0+5a6eck4kfEyYZ0yhj7/dSTD4I8FQW",
|
||||
"fbxgdMaAy5B/iokPXuntXm98rzV1vVYbdVYBW2jIKKq0gvjxlPi2MJNd8Gf1QmcrXLoANMEcPERDEw2b",
|
||||
"0Fj5PV47SFWxm166RoRKwhlwSc8uZMaTUVJ/KkoBQm9cnXzwMRdIvpYQGy+YubDLt01BAihWy8pMhonK",
|
||||
"7QhHU8L2uGExsiiLNdJHUiFeHfq71I+CsAiNNPSIqBEzpza6iufY4Gy8+4VRq2D5Aep3KOIwjXwkqFIU",
|
||||
"rUwZnd3+TpeobrfTyatuDudSHDZS8opJf1x/LFdpCa8BHG2Y0/jI4p0y6OMD52Mxx3L/mcp8M/vo+pSD",
|
||||
"NyahAPaMfafh0AWE6WcfpmJcHMbIbF72u4k3FDDrv8qg7RcTb60J20xYus6PVZzTyKsMoYaIk3DmA1Ke",
|
||||
"siIrnZ3yJSRPESDiQSjIlADTYUQoiFi2tnYn9XLZHwgXNojk6+WUpA/i+2QtWM7H0JuhWRL1awSMlFne",
|
||||
"EHEQEsGe9IiibJ+qpsp1czNrcaCyQVm6T7q9DXZpqSiTul6whDWfzoiLopAoOuEbuFF5RWj3VCoNp2RW",
|
||||
"i+MrPbTWRSROmH1H+tRKb5w6wHVTb814s7fK2mhR16D1Xg4svTOpJQr5zQJfled6FUs4nx6Xv0dMR+Q2",
|
||||
"CRC3PKyDn4eH19b/PjysSkFIb7quzBiHKMgyK72VKjfK61pMQsH3bq8pf/4ZqtmVh1MV6CsZVGcVYHp6",
|
||||
"0jw7PTttnntw0bwYDPon+KLf75/hHeJ8TTxwkerS2FgdNueEpBLaJoTioVmwHm+XO7Ap7W2NNif79O75",
|
||||
"JSuPRAtCX47LJWGvzmjKaJARRFEAOldW7HQDHvki02cUL7C1489xrbes5s+o87qarZxZaIKyQdXf7z7d",
|
||||
"jN/9dn87vLr/dOs0nKtPN/fvfrsf//zlw4fSoEftu3vhM61vf7br+X5AKbuXFEZVxgoxYmqdGV1vGTZo",
|
||||
"69oQ8NQq61ZUdLONPb3u4Gxw3j8dnG3o7mk4HNyIEbG8k+RqwS587MKc+h6wYSRK4ubPyQBk5yPFr05r",
|
||||
"TyMRMUBE4qcEApuRU/18uhsn6ej7rTn8PGr+A5aJheEFkc+qSYeEU2p7jrCrQBICTHzn0gkCdxaRMATO",
|
||||
"/4YxAwEtlwbJyh+JO8fgo4/uezPMaTgRk1M96v6xVKMLfUfDz6M42M06aXWS6BNz58CFceAc2DNxdRTp",
|
||||
"ExcMehkKotD85sU7v7y8tIxrsfsLIpSfKVt/+HkkL3FWM5xOq9PqqszfAkK8IM6l0291Wn1H4dVcnV/b",
|
||||
"jctCC1rmV3SYwBFGIbzYho0XInRicMHoM/HAQ57Ob7b0JU0TNPLi+ab4pI0TuLANIXvpDsu0TZV0h2mT",
|
||||
"UPSVhzNumrqkWTTf+tnrdPdMs2lQKqFZvzckeohHrgucTyPf31eT5KDTqZoRc93O9Yaqad3N0zJNgHJS",
|
||||
"72LzpHzX5qrhnNSjMd2Rm8Yp5/JrCUJ9fVw9Nhxu6zNGQzMKLuEFz7h0paaVSJuu8yiXNzbTfiXeSpI3",
|
||||
"KytY34JgBJ6V5XDtuV1rPpMlIoKbHuqsubwHkbKVjPJ19qZ8STW4WvNSBn1Utv0p23sQMeBIPRhdr9G1",
|
||||
"7LcKX8tpS4akqj2PCuLdEn+sYzyuU/GEqz6KNKpLI6gEcz35DcDcRKIbwFxQE3/WgO5OiWvTbNsQ9oix",
|
||||
"h1N7fZ5pV1sTX9tuuntwC6SNOwsN2Ga+5Clirh3+09IYkXdIAE5aIssAOCb9iMGHxOC0hsTakdbMpCHt",
|
||||
"kIB8B8Jun5C0GYrvqpX2AKCc7s3bDMoTUBn30r7MTTg9WNclLFc9wvThLOMuaxnrjSGP1F66KLQBqaVa",
|
||||
"+CZfklSLJsv0pzNlUJ0pPr0NVmfrXWsC5pgNydhRM/ermSq5JjK1RZ1yLAQU8VntBbbzSq7bV1S65Ds8",
|
||||
"QWmmZRQSQVRsnmq5WjAq0a5oCab1RvfhHAj2s00+FbhvCDW4riTfetNUSlJSL6HwXaal7hjlH9RIjaYk",
|
||||
"bV4pszSdapXeI+nfq+E6+DJ07VdjteJ78xna2wT3+Q/fqn2GYeEY5x8szrdfGCYKc5h8i1Rn65rqJgZF",
|
||||
"KmpWn13E/UVGp3VxuaDM18lXAIdMEeo9SpTXvjvq7eH01svJOFGJ/YY66ZK+UmLTdL1Wha/m4P5H668b",
|
||||
"MWaRTNWjMy2+WdVNmpXhkKqbbbivjgnmmKMJQIjiBuijIu+5siL1JNN43loTEWyrusl/F6MU98l2yG1M",
|
||||
"EvrZpr50K7nq3nYZEcAILr9+2jbDA1857TYl+jvMc3DU2wNcNp/ic7YKq2ruw88jras1quW6AWTrYrnu",
|
||||
"9TzMlS7d+rdLqfwpRdtf4Hqn2yCOVfI3rpJbLSixjBiKdyiPa3tZXx1PjONA4Gtat6t07RjzHrAmEytA",
|
||||
"phCTxd2tYoS4oW67gngKuGvUww+O1+ur4bp+bb8tij8VNz2AcUvmDgVyrfHH+vgb1sdrI2tbmDbw7zCI",
|
||||
"0hDmnfqERAGzbhyPQp2dqIpmst8z5rLUwMXBzSPdF19hI7lG+G0S1Z1DEGt618uo1TTyyD/WkPadnpai",
|
||||
"XW9iak32bI0p18rMqBe5cSuvakzWjbpzIRb8st2OW4Xbz11lYmaP/EqfrJHIKNtX6CqDbJVO5ElTcjY/",
|
||||
"uWrUXMaWatMr5cu3dRdLirrxWoWsU921khuVWSmWfN0VdCohtUI2h7B6XP03AAD//4XAhtjWWAAA",
|
||||
"H4sIAAAAAAAC/+xceW8juXL/KkTnAQF2dUs+gyDRs2d39DKH1/Ykm9iOQHWXJL7tbsok27Zm4O8e8OqT",
|
||||
"rcOWvA+IAf9hqdlksVj1q2LxR/3wfBotaAyx4N7pD28OOACm/r3EAj6RiAj5IQDuM7IQhMbeqXqEQvkM",
|
||||
"kXhKWYTlA0RipD+gW089/ZdHEgf08V8FiaCp/7/1vIYHTzhahOCdet1OxzbqdryGx/05RFiO6GxzKNtE",
|
||||
"+OkTxDMx9077vYa3wEIAk2L9702neXL3s22sP/3Fa3hiuZAdccFIPPOen5/lWwxHIMxcz0ICsRidV6d6",
|
||||
"PQfkq6dodN7yGh6R3y6wmHsNL8aR7JcEXsNjcJ8QBoF3KlgC+Zn8hcHUO/X+qZ2puq2f8nY6sJTpnPpJ",
|
||||
"tEKOwDzfiyS5waUsH54WlNVKAurpXuRIB5ZS/JYAW9YJMTpHdIrEHNC9bLZ7UezoymAY8AWNOSh7GcXS",
|
||||
"5HD4gTHK5Bc+jQXEylXwYhESX3lE++9cSvtj06nL3j4D53gGetDipO2oiAN7AIZAtpfTrvNa12CmbTtr",
|
||||
"qEYaxQ84JMEl3CfAxRtOSQ2LmB4XTWiw3NGMrin9jOOlmRF/syldGkNByYLGSFCKIhwv7Qz5DmbX8C5B",
|
||||
"sGVzOBXAqr7xJYkmwKRvcPBpHHA0gSllgARbkniG8AyTuJWH4W6vk/cJDeLSd2LR72nEJVESeafHh4NO",
|
||||
"p+FFJNafOym2kljADJhUyHPD+xbjRMwpI9+lz7214h/nEKMkJ8JOLOrZqigXMc5wfLWM/eoajDQwmchB",
|
||||
"OMJhSB+V9n1BHgDxZezzLDRNKA0Bx3JtTc8MsAA38C0YXQATBLiMt8iXTQlVS5o9kq+SYPP4YwFzk/Zf",
|
||||
"ZEsNihZXbzTQqj7u0mnRyd/BF9ms1kRYeDIAp/rKMoDhcFiK+4eFuN9yRflszL/SYLlyXBK8TndVTdSr",
|
||||
"4IvRcq0wSoXF2TMQUFRA72ALDVwJLBJeHfRqAT6ZSjOStspVKwkb2IiiMCKWfn7jjb6Mr/77y5nX8L58",
|
||||
"vVb/fjjPfRh9+TU3Z7cA7mUY2nmb8fMJpdZddW14OqH162MmX14j00X9On1bBJs4oJhjgSK8RBMJ+PIV",
|
||||
"hy35OB5zgxPrJbag8jKXrE6HBvCfwDjRWOtIK4FLrSCfBoAedEs5h3wYOBzkw8BJr9fvH/U6/cPjg8HR",
|
||||
"0WGnEBS61aAgpQhD8AV1xKv0EYpoAGFVfRoyxw/ZJFbpw871ueFpyxpvB4NTAmGw3ris0L/o5s8NL8QC",
|
||||
"uHiBmEZzY1+GAGCb9pBf2FwvAp7Ei7ooeUimvFQn9aLWDF9RSqO8mE4HLOjWbbRKonIkVCHXvly1o428",
|
||||
"qTC29qqGpzYYG9hRtmMo6tJgetrN+lnXhwmaiEUijAJkx62XhYaSAddrWWJyVbVEQLSllygrxU8j/aaS",
|
||||
"04iFGcPLglRX4Kg7XOBlSHGg1lqBrUqo0Fn9kr8YOl6MAv84zlyxsHPqa6BbG9VKScCOotmflI42Monv",
|
||||
"3FpRhY81NZdMBw6NvC7O1PodjgPleA84TCBFOCtSPkn8YSVadlMv169lwi573umgl33s22qI/eLAO73p",
|
||||
"NnqN/p3LeuaYz9fN76Nss9FKl8pNlZXLRx81cqqwVWu4tnKmM/0st+50Tw6OO8G0OelPj5tH/cFx8wRP",
|
||||
"us0uHBxM+tPuMQRH+VQoSZREpa1IBVytPFdJFGG2XCMU161Wmtjbal+N5lJ0YQ9emdV59klCiKpPFa00",
|
||||
"sq96S5qgKOECkdgPkwAQRvbhc3nyUd2ARhKkv51Io1eBCiccigudDjeTu+8I0IzSIL/ZeEEQLWnOSunU",
|
||||
"m6pqnoPAJOSrA5uprQpGZjNgyNYdd4Q6OnsYh1SXYNyWaZ/KwP84J/5cadUI9p0s0JSEgB5JGMptz5Qm",
|
||||
"ccmteP+03cbtYVu/0+51egedXrfflv7T8vlDSdudwXFB3er91s/yz/Sgivk/jp/brZ9vb2UPzqRms42h",
|
||||
"XoyajWEeeFZsEjeqj9egDTQHwUG3edTt+82TY4Dm4HAAx/3jbnfa7b8AbQrzcYd2yjmZhKlgcmIaZez+",
|
||||
"XqopBAGBqqKPF4zOGHCZ8k8xCSFw7u71wNfaUldbtTFnlbDFRoyqSSuIH09JaA9mih3+oh7oaoVPF4Am",
|
||||
"mEOAaGyyYZMaq7jHN05SVe6mu94gQyXxDLiU5yVipi+j7PypqgWIg3F98SHEXCD5WEJs2mFhwy6fNgWJ",
|
||||
"oHpa5nIZJmqHIxxNCdvhgNXMwpVr5JekRr069fdpmERxFRppHBCxQc6cG+gsfccmZ+OXbxi1CboXUD9D",
|
||||
"CYdpEiJBlaFoYyrY7PZ7usx0u51O2XRLOJebYSOnr1T0u9XLcpbX8ArA0Y45TZcsHamAPiFwPhZzLMef",
|
||||
"qco3sx/9kHIIxiQWwB5w6DU8uoA4/zmEqRhXmzEym7u+N/mGAmb9nwvaPpp8a0XaZtLSVXGsZp1GQW0K",
|
||||
"NUScxLMQkIqUNVXp4ivfYnKfACIBxIJMCTCdRsSCiGVr63CyWS37E+HCJpF8tZ6y8kG6n9wIlss59Hpo",
|
||||
"lkL9lgAjLs8bIg5CIti9blHV7X3dq7Lf0psbzUBVg4pyH3R7a/zSSuHSuu7QMbWQzoiPkpgoOeEJ/MR9",
|
||||
"IvTyUiqNp2S20YzPdNONNiJpwewV5VOrvXFuAVe9emnam7FV1UaregNZr2VD555JdVGpb1bmVbuuZ6mG",
|
||||
"y+Vx+X3CdEZuiwAp5WEV/Nze/mj9dHv77AQhPeiqY8Y0RUF2sjJaqeNGuV1LRajE3u0t5c9fQ/V27eLU",
|
||||
"JfpKB/VVBZgeHjSPDo8Om8cBnDRPBoP+AT7p9/tH+AV5vhYeuMixNNaeDpt1QtIILQmhumgWrMfb1Q5s",
|
||||
"SXtbpy3pPj96ucvaJdGK0Jtjtybs1hlNGY0KiqgqQNfKqkw34EkoCjyjtIOtA39p1nrI+vkZc151Zivf",
|
||||
"rJCgbFL1t6uvX8Yffr++HJ5df730Gt7Z1y/XH36/Hv/y7dMnZ9Kjxn35wWfe3v7s0PN6QHHtSyqtanOF",
|
||||
"FDG1zYzOt0wbtHetSXg2OtatOdEtEnt63cHR4Lh/ODhaw+5peBz8hBGxvJLiWsifxUTQYSIcObP8Viaj",
|
||||
"pqSUyPwWDSP8ncboTL+IRucXLTSS6Kkzxstfzo6Pegfob/91jSYSuBZMmo9vMM2KoOYU0kdtX4buo4Y5",
|
||||
"owFUvvzGQu/Umwux4KftdkD978uWbNBKeBMwF81uCyu5zHxaPo3aVLbotVMykSKp0oXZqUeYyD6Hvg+c",
|
||||
"y+iYcGD/zJF+oPcqElK9X0Ggr6PzMyToH2A2rFOi+R3ll+0jaYGy9Wvk1sPljVl9r2qsIfZhTsMAmHvl",
|
||||
"LrIGqcqRslJ9GDFNRMIAEbtuto6qWJiaQ5XxMH9vDi9Gzf+AZYaLeEHkZ0WtIvGUWqYY9kVeuVHkzxIS",
|
||||
"x8D5v2PMQICcYNbzZ+LPMYTos/+raeY1vETpTOtKtq6wxYYXo3SLUkytlP+hr8yfAxcm7eLAHqT5SYsL",
|
||||
"iQ8m5hgJkth8F6QjPz4+tkxCYMcXRKj1dvU/vBjJrbf1Z6/T6rS6ql67gBgviHfq9VudVt9TUWaujK/t",
|
||||
"p4d5C+rKBnRyxxFGMTxams0jEbqcu2D0gQQQoEBXpVvaXLVAoyB93xwZakgFLiyNZyecvgLZzcHp00Cm",
|
||||
"5HMnoX5euoziWybs9jrdHctsaGUOmfVzI2KAeKL8e5qE4a6orYNOp+6NdNbtEqNXvdZd/1qBuilf6p2s",
|
||||
"f6nMtX1ueAebyZjnUeeji3d686OKUDd3z3cNj9tTNWOhBQOX8IJnXCZAhgCmXde7k90bn2n/IMGzFG/m",
|
||||
"ohlcgmAEHpTncJ1v+dZ9JktEBDfM96K7/Aoi5ysF4+vszPiyM/x6y8s59Lux7c7YZAjHOTsYna+wteIN",
|
||||
"kxu3bFmT3BndnYJ43xGPdWbO9QEK4Yr9kkd16QS1YK5ffgMwN/uHNWAusx3dcD10dxyhTU/bbjzeMXZ/",
|
||||
"Zq/XMx9qN8TXtp/nfG6BtCkf1IBt4f5VFXNt878ujRMF+wTgjMjqAuBU9HcM3icG5y0ktY68ZWY0wn0C",
|
||||
"8hUIO3wm0noovqo32j2Acp5RuR6UJ6DOSZxs2nU4PVjF7Za9vsP0/jzjqugZq52hjNRB/ihvDVJLswhN",
|
||||
"lSs745ss8xeeXFBdODJ8G6wunlKuSJjTaciJvVvmbi1TlURF4URYF4orCUW6VjuB7bKRa9KRKpe8IhI4",
|
||||
"Ky2jmAiicvMcUW7BqES7qicYwpRmT+0J9ovUrBrcN4IaXFeab71pKSUjQjgk/FAgQr5n+Xt1UmMpGTkv",
|
||||
"55aGX1gbPTLW5Qahgy9j39712yi/N5cH3ya5L19XrI8ZZgrvef7e8nx7LzQzmP3UW6Q529C0aWFQ5LJm",
|
||||
"dVkmZYUZm9aUgIoxn2d3N/ZZItRjOIzXPnu32/3ZbVDScWYSu0118kQMZcSGKr/ShM/m4P+h7ddPGLNI",
|
||||
"plgEBWJ20XQzijns03SL1yTqc4I55mgCEKOUtv5uyDs+WZF2Urgu0FqREWxrutmP/CjDnVPNs64D3YTF",
|
||||
"2mQ/Xn/+hCKIE7TAM30IjTN6AQTqBJ07kfcjjeBCZpprzVfAk2jPRRQW7bYolZLEvJRWS+Q8tGRSxjzh",
|
||||
"QnVXoAx1O4Pjg6MSrfunml+rKo2dDiOleDf8nSO4cy2t7cvXirlwSGckrrXf4t5QtUXTkD7KsMAgIAx8",
|
||||
"dZIjaJ4OYxpKARylFDVgyZD7nZ7LefQA+d6znoum86n2Tti3y0/2noKzE8dPByWMrKHIWT5L6ycnU+7d",
|
||||
"kFca8nOjRLu6sVyjhmfJR5ZHVK7HqKUz65mL1ettvOnjMJxg/49aY/+I4yA0pv5V9tJD9h0UJMxe0DTW",
|
||||
"Ywok6BJ8IDatLlC29I+SKP5m3jlwHCB48uc4ngFHxCAw/QNiXuMtZ1bySqiqstVWjG7ZTYrVl1GQZLuV",
|
||||
"PzO3yhFuhs3/wc3vnebJ7W1z7P7Fwkbl6EElbelUlALOri5/kUoVElEyJlZJVi5cp641wnY7vcHWwt5t",
|
||||
"i0w5I0R4KqeTlXq0rWyJVBZX63t7OWT9Wx1m/X9CnwKglB0d4mBBSaGy6wQUmohaIPlEZxoOZEaHaKI3",
|
||||
"1lpx+nc/VDEJOFdGEwd1sVSPk8rkhAcpyCuiqexfZQoyHc2ZcppCvM56Qyvgu83u+aBCL6XC+21i4729",
|
||||
"lrWW4xAWb5Ll7y+rK8M+IwIYwe7TM3u3bc8nZnYYx85jWJ7B+7Z7D2dl9+k6W5tTlOHhxUhvtTcg++pb",
|
||||
"B1tzfX8zqcI+TqTy981ewvS9z8n2D3A6pVnc7yTfNyb5WitweEYKxS9g92p/WU3uzZxjT+Br7gvX2dp7",
|
||||
"yX6PlLLUAAo8siLublXiTG9xbcfnzQH3BnTeveP1ajKvpt/aH7RIf5/MXDxL7wG+gN+rLf6d3vuG9N6N",
|
||||
"kbUtzN3jVziEM4X5oH63QAGzvq2cxPpwtS6bKf6ITolkA1zs3T3yl7FrfKR0+3obnk1nH8KaC9MuabWM",
|
||||
"PAnfKXC7ZtdI1a52MdUne3BXJS8YDRI/vYmo7lUmjluhPo3aD13lYmaMck9frZPILDtU6CqTbMWG4FmR",
|
||||
"sEivqJYfa7qxTNN8T2X26aadZZzUtK/KofmmfWU7KtNTqvlNe9Anobkeikegm3aDC5ehs97yRYXnu+f/",
|
||||
"CwAA///aY3I0l2cAAA==",
|
||||
}
|
||||
|
||||
// GetSwagger returns the content of the embedded swagger specification file
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package queryapi
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
func (s *Controllers) Login(ctx echo.Context) error {
|
||||
// Redirect to Cognito login page
|
||||
// This is a placeholder implementation - you'll need to implement the actual Cognito redirect logic
|
||||
loginURL := "https://doczy.auth.us-east-1.amazoncognito.com/oauth2/authorize"
|
||||
return ctx.Redirect(http.StatusFound, loginURL)
|
||||
}
|
||||
|
||||
func (s *Controllers) LoginCallback(ctx echo.Context, params LoginCallbackParams) error {
|
||||
// Handle OAuth2 callback
|
||||
// This is a placeholder implementation - you'll need to implement the actual token exchange logic
|
||||
redirectURL := "https://doczy.com" // Replace with your actual redirect URL
|
||||
return ctx.Redirect(http.StatusFound, redirectURL)
|
||||
}
|
||||
|
||||
func (s *Controllers) Logout(ctx echo.Context) error {
|
||||
// Handle logout
|
||||
// This is a placeholder implementation - you'll need to implement the actual logout logic
|
||||
logoutURL := "https://doczy.auth.us-east-1.amazoncognito.com/logout"
|
||||
return ctx.Redirect(http.StatusFound, logoutURL)
|
||||
}
|
||||
|
||||
func (s *Controllers) GetHomePage(ctx echo.Context) error {
|
||||
return HomeHandler(ctx)
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
package queryapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/lestrrat-go/jwx/v2/jwt"
|
||||
)
|
||||
|
||||
// Constants for route paths
|
||||
const (
|
||||
LOGIN_CALLBACK_PATH = "/login-callback"
|
||||
)
|
||||
|
||||
// endpointsList keeps track of registered endpoints
|
||||
// This list should be kept in sync with actual route registrations
|
||||
var endpointsList = []string{
|
||||
// Auth Service Endpoints
|
||||
"/login",
|
||||
LOGIN_CALLBACK_PATH,
|
||||
"/logout",
|
||||
"/home",
|
||||
|
||||
// Client Service Endpoints
|
||||
"/client",
|
||||
"/client/:id",
|
||||
"/client/:id/status",
|
||||
"/client/:id/collector",
|
||||
"/client/:id/documents",
|
||||
"/client/:id/export",
|
||||
|
||||
// Query API Endpoints
|
||||
"/query",
|
||||
"/query/:id",
|
||||
"/query/:id/test",
|
||||
|
||||
// Document Service Endpoints
|
||||
"/document/:id",
|
||||
|
||||
// Export Service Endpoints
|
||||
"/export/:id",
|
||||
}
|
||||
|
||||
// homeHandler renders a simple HTML page with links to all endpoints
|
||||
// and displays authentication status based on JWT token
|
||||
func HomeHandler(c echo.Context) error {
|
||||
var linksHTML string
|
||||
baseURL := "http://localhost:8080"
|
||||
|
||||
// Create list items for each endpoint
|
||||
for _, endpoint := range endpointsList {
|
||||
// Skip endpoints with path parameters for direct linking
|
||||
if strings.Contains(endpoint, ":") {
|
||||
displayPath := strings.Replace(endpoint, ":id", "{id}", -1)
|
||||
linksHTML += fmt.Sprintf("<li>%s (requires parameter)</li>\n", displayPath)
|
||||
} else {
|
||||
linksHTML += fmt.Sprintf("<li><a href=\"%s%s\">%s</a></li>\n", baseURL, endpoint, endpoint)
|
||||
}
|
||||
}
|
||||
|
||||
// Check if user is authenticated by looking for token in cookie
|
||||
tokenCookie, err := c.Cookie("auth_token")
|
||||
isAuthenticated := (err == nil && tokenCookie.Value != "")
|
||||
|
||||
// Variables for user info
|
||||
username := ""
|
||||
email := ""
|
||||
var userGroups []string
|
||||
|
||||
// If authenticated, try to decode the JWT token to get user info
|
||||
if isAuthenticated {
|
||||
// Parse the JWT token without verification (just to extract info for display)
|
||||
// In a production application, you would want to verify the token here as well
|
||||
token, _ := jwt.Parse([]byte(tokenCookie.Value), jwt.WithVerify(false))
|
||||
if token != nil {
|
||||
claims, _ := token.AsMap(context.Background())
|
||||
username, _ = claims["cognito:username"].(string)
|
||||
email, _ = claims["email"].(string)
|
||||
|
||||
// Try to extract groups
|
||||
if rawGroups, ok := claims["cognito:groups"]; ok {
|
||||
if groups, ok := rawGroups.([]interface{}); ok {
|
||||
userGroups = make([]string, len(groups))
|
||||
for i, g := range groups {
|
||||
userGroups[i] = fmt.Sprint(g)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create authentication status section
|
||||
var authStatusHTML string
|
||||
if isAuthenticated {
|
||||
authStatusHTML = fmt.Sprintf(`
|
||||
<div class="auth-status authenticated">
|
||||
<h2>Authentication Status: Authenticated</h2>
|
||||
<p><strong>Username:</strong> %s</p>
|
||||
<p><strong>Email:</strong> %s</p>
|
||||
<p><strong>Groups:</strong> %s</p>
|
||||
<p><a href="/logout" class="logout-btn">Logout</a></p>
|
||||
</div>
|
||||
`, username, email, strings.Join(userGroups, ", "))
|
||||
} else {
|
||||
authStatusHTML = `
|
||||
<div class="auth-status unauthenticated">
|
||||
<h2>Authentication Status: Not Authenticated</h2>
|
||||
<p>You are not currently logged in.</p>
|
||||
<p><a href="/login" class="login-btn">Login</a></p>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
|
||||
// Create the complete HTML page
|
||||
html := fmt.Sprintf(`
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Doczy Home</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
line-height: 1.6;
|
||||
margin: 20px;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
h1, h2 {
|
||||
color: #333;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
ul {
|
||||
margin-top: 20px;
|
||||
}
|
||||
li {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
a {
|
||||
color: #0066cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.note {
|
||||
background-color: #f8f9fa;
|
||||
border-left: 4px solid #5bc0de;
|
||||
padding: 10px 15px;
|
||||
margin-top: 20px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.auth-status {
|
||||
margin: 20px 0;
|
||||
padding: 15px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.authenticated {
|
||||
background-color: #dff0d8;
|
||||
border: 1px solid #d6e9c6;
|
||||
}
|
||||
.unauthenticated {
|
||||
background-color: #f2dede;
|
||||
border: 1px solid #ebccd1;
|
||||
}
|
||||
.login-btn, .logout-btn {
|
||||
display: inline-block;
|
||||
padding: 8px 16px;
|
||||
background-color: #0066cc;
|
||||
color: white;
|
||||
border-radius: 4px;
|
||||
text-decoration: none;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.logout-btn {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Doczy Home</h1>
|
||||
|
||||
%s
|
||||
|
||||
<h2>Available Endpoints</h2>
|
||||
<ul>
|
||||
%s
|
||||
</ul>
|
||||
|
||||
<div class="note">
|
||||
<p><strong>Note:</strong> This is a debugging page. Some endpoints require authentication or specific permissions.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
`, authStatusHTML, linksHTML)
|
||||
|
||||
return c.HTML(http.StatusOK, html)
|
||||
}
|
||||
Reference in New Issue
Block a user