• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FIWARE / VCVerifier / 15674278844

16 Jun 2025 07:13AM UTC coverage: 37.558% (-7.8%) from 45.372%
15674278844

push

github

web-flow
Merge pull request #58 from FIWARE/jwt-inclusion

Jwt inclusion

99 of 674 new or added lines in 13 files covered. (14.69%)

14 existing lines in 3 files now uncovered.

1215 of 3235 relevant lines covered (37.56%)

0.42 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

32.32
/openapi/api_frontend.go
1
/*
2
 * vcverifier
3
 *
4
 * Backend component to verify credentials
5
 *
6
 * API version: 0.0.1
7
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
8
 */
9

10
package openapi
11

12
import (
13
        "net/http"
14
        "slices"
15

16
        "github.com/fiware/VCVerifier/logging"
17
        "github.com/fiware/VCVerifier/verifier"
18

19
        "github.com/gin-gonic/gin"
20
)
21

22
const DEFAULT_REQUEST_MODE = verifier.REQUEST_MODE_BY_REFERENCE
23

24
var frontendVerifier verifier.Verifier
25
var requestObjectClient *verifier.RequestObjectClient
26

27
func getFrontendVerifier() verifier.Verifier {
1✔
28
        if frontendVerifier == nil {
1✔
29
                frontendVerifier = verifier.GetVerifier()
×
30
        }
×
31
        return frontendVerifier
1✔
32
}
33

NEW
34
func getRequestObjectClient() *verifier.RequestObjectClient {
×
NEW
35
        if requestObjectClient == nil {
×
NEW
36
                requestObjectClient = verifier.NewRequestObjectClient()
×
NEW
37
        }
×
NEW
38
        return requestObjectClient
×
39
}
40

41
// VerifierPageDisplayQRSIOP - Presents a qr as starting point for the auth process
42
func VerifierPageDisplayQRSIOP(c *gin.Context) {
1✔
43

1✔
44
        state, stateExists := c.GetQuery("state")
1✔
45
        if !stateExists {
2✔
46
                c.AbortWithStatusJSON(400, ErrorMessageNoState)
1✔
47
                // early exit
1✔
48
                return
1✔
49
        }
1✔
50

51
        callback, callbackExists := c.GetQuery("client_callback")
1✔
52
        if !callbackExists {
2✔
53
                c.AbortWithStatusJSON(400, ErrorMessageNoCallback)
1✔
54
                // early exit
1✔
55
                return
1✔
56
        }
1✔
57

58
        clientId, clientIdExists := c.GetQuery("client_id")
1✔
59
        if !clientIdExists {
2✔
60
                logging.Log().Infof("Start a login flow for a not specified client.")
1✔
61
        }
1✔
62

63
        requestMode, requestModeExists := c.GetQuery("request_mode")
1✔
64
        if !requestModeExists {
2✔
65
                logging.Log().Infof("Using default request mode %s.", DEFAULT_REQUEST_MODE)
1✔
66
                requestMode = DEFAULT_REQUEST_MODE
1✔
67
        }
1✔
68

69
        qr, err := getFrontendVerifier().ReturnLoginQR(c.Request.Host, "https", callback, state, clientId, requestMode)
1✔
70
        if err != nil {
2✔
71
                c.AbortWithStatusJSON(500, ErrorMessage{"qr_generation_error", err.Error()})
1✔
72
                return
1✔
73
        }
1✔
74

75
        c.HTML(http.StatusOK, "verifier_present_qr", gin.H{"qrcode": qr})
1✔
76
}
77

78
// VerifierLoginQr - Presents a qr as starting point for the auth process
NEW
79
func VerifierLoginQr(c *gin.Context) {
×
NEW
80

×
NEW
81
        state, stateExists := c.GetQuery("state")
×
NEW
82
        if !stateExists {
×
NEW
83
                c.AbortWithStatusJSON(400, ErrorMessageNoState)
×
NEW
84
                // early exit
×
NEW
85
                return
×
NEW
86
        }
×
87

NEW
88
        redirectUri, redirectUriExists := c.GetQuery("redirect_uri")
×
NEW
89
        requestUri, requestUriExists := c.GetQuery("request_uri")
×
NEW
90

×
NEW
91
        if !redirectUriExists && !requestUriExists {
×
NEW
92
                c.AbortWithStatusJSON(400, ErrorMessageNoRedircetUri)
×
NEW
93
                // early exit
×
NEW
94
                return
×
NEW
95
        }
×
96

NEW
97
        clientId, clientIdExists := c.GetQuery("client_id")
×
NEW
98
        if !clientIdExists {
×
NEW
99
                logging.Log().Infof("Start a login flow for a not specified client.")
×
NEW
100
        }
×
101

NEW
102
        scope, scopeExists := c.GetQuery("scope")
×
NEW
103
        if !scopeExists {
×
NEW
104
                logging.Log().Infof("Start a login flow with default scope.")
×
NEW
105
                scope = ""
×
NEW
106
        }
×
107

NEW
108
        if requestUriExists {
×
NEW
109
                logging.Log().Debug("Requesting the client for its request object.")
×
NEW
110
                cro, err := getRequestObjectClient().GetClientRequestObject(requestUri)
×
NEW
111
                if err != nil {
×
NEW
112
                        logging.Log().Warnf("Was not able to get request object. Err: %v", err)
×
NEW
113
                        c.AbortWithStatusJSON(500, ErrorMessageUnresolvableRequestObject)
×
NEW
114
                        return
×
NEW
115
                }
×
NEW
116
                if !slices.Contains(cro.Aud, getFrontendVerifier().GetHost()) {
×
NEW
117
                        c.AbortWithStatusJSON(500, ErrorMessageInvalidAudience)
×
NEW
118
                        return
×
NEW
119
                }
×
120

NEW
121
                clientId = cro.ClientId
×
NEW
122
                scope = cro.Scope
×
NEW
123
                redirectUri = cro.RedirectUri
×
124
        }
125

NEW
126
        nonce, nonceExists := c.GetQuery("nonce")
×
NEW
127
        if !nonceExists {
×
NEW
128
                c.AbortWithStatusJSON(400, ErrorMessageNoNonce)
×
NEW
129
                // early exit
×
NEW
130
                return
×
NEW
131
        }
×
132

NEW
133
        requestMode, requestModeExists := c.GetQuery("request_mode")
×
NEW
134
        if !requestModeExists {
×
NEW
135
                logging.Log().Infof("Using default request mode %s.", DEFAULT_REQUEST_MODE)
×
NEW
136
                requestMode = DEFAULT_REQUEST_MODE
×
NEW
137
        }
×
138

NEW
139
        qr, err := getFrontendVerifier().ReturnLoginQRV2(c.Request.Host, "https", redirectUri, state, clientId, scope, nonce, requestMode)
×
NEW
140
        if err != nil {
×
NEW
141
                c.AbortWithStatusJSON(500, ErrorMessage{"qr_generation_error", err.Error()})
×
NEW
142
                return
×
NEW
143
        }
×
144

NEW
145
        c.HTML(http.StatusOK, "verifier_present_qr_v2", gin.H{"qrcode": qr, "wsUrl": getFrontendVerifier().GetHost() + "/ws?state=" + state})
×
146
}
147

148
// VerifierPageLoginExpired - Presents a page when the login session is expired
149
func VerifierPageLoginExpired(c *gin.Context) {
×
150
        c.JSON(http.StatusOK, gin.H{})
×
151
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc