|
143 | 143 | background-color: #c82333;
|
144 | 144 | }
|
145 | 145 |
|
| 146 | + button.oauth { |
| 147 | + background-color: #4285f4; |
| 148 | + color: white; |
| 149 | + } |
| 150 | + |
| 151 | + button.oauth:hover { |
| 152 | + background-color: #357ae8; |
| 153 | + } |
| 154 | + |
| 155 | + .oauth-status { |
| 156 | + display: flex; |
| 157 | + align-items: center; |
| 158 | + gap: 10px; |
| 159 | + margin-top: 15px; |
| 160 | + } |
| 161 | + |
| 162 | + .oauth-connected { |
| 163 | + color: #2e7d32; |
| 164 | + font-size: 14px; |
| 165 | + display: flex; |
| 166 | + align-items: center; |
| 167 | + gap: 5px; |
| 168 | + } |
| 169 | + |
146 | 170 | .message {
|
147 | 171 | padding: 12px;
|
148 | 172 | margin-bottom: 20px;
|
@@ -206,25 +230,44 @@ <h2>{{.DisplayName}}</h2>
|
206 | 230 | {{end}}
|
207 | 231 | </div>
|
208 | 232 |
|
209 |
| - <form method="POST" action="/my/tokens/set"> |
210 |
| - <input type="hidden" name="csrf_token" value="{{$.CSRFToken}}"> |
211 |
| - <input type="hidden" name="service" value="{{.Name}}"> |
212 |
| - <input type="password" |
213 |
| - name="token" |
214 |
| - placeholder="{{if .HasToken}}Enter new token to update{{else}}Enter your {{.DisplayName}} token{{end}}" |
215 |
| - {{if .TokenFormat}}pattern="{{.TokenFormat}}" title="Token must match pattern: {{.TokenFormat}}"{{end}} |
216 |
| - required> |
217 |
| - <button type="submit" class="primary"> |
218 |
| - {{if .HasToken}}Update Token{{else}}Save Token{{end}} |
219 |
| - </button> |
220 |
| - </form> |
221 |
| - |
222 |
| - {{if .HasToken}} |
223 |
| - <form method="POST" action="/my/tokens/delete" class="delete-form"> |
224 |
| - <input type="hidden" name="csrf_token" value="{{$.CSRFToken}}"> |
225 |
| - <input type="hidden" name="service" value="{{.Name}}"> |
226 |
| - <button type="submit" class="danger">Remove Token</button> |
227 |
| - </form> |
| 233 | + {{if .SupportsOAuth}} |
| 234 | + {{if .IsOAuthConnected}} |
| 235 | + <div class="oauth-status"> |
| 236 | + <span class="oauth-connected">✓ Connected via OAuth</span> |
| 237 | + <form method="POST" action="/oauth/disconnect" style="display: inline;"> |
| 238 | + <input type="hidden" name="service" value="{{.Name}}"> |
| 239 | + <button type="submit" class="danger">Disconnect {{.DisplayName}}</button> |
| 240 | + </form> |
| 241 | + </div> |
| 242 | + {{else}} |
| 243 | + <div class="oauth-status"> |
| 244 | + <form method="GET" action="/oauth/connect" style="display: inline;"> |
| 245 | + <input type="hidden" name="service" value="{{.Name}}"> |
| 246 | + <button type="submit" class="oauth">Connect with {{.DisplayName}}</button> |
| 247 | + </form> |
| 248 | + </div> |
| 249 | + {{end}} |
| 250 | + {{else}} |
| 251 | + <form method="POST" action="/my/tokens/set"> |
| 252 | + <input type="hidden" name="csrf_token" value="{{$.CSRFToken}}"> |
| 253 | + <input type="hidden" name="service" value="{{.Name}}"> |
| 254 | + <input type="password" |
| 255 | + name="token" |
| 256 | + placeholder="{{if .HasToken}}Enter new token to update{{else}}Enter your {{.DisplayName}} token{{end}}" |
| 257 | + {{if .TokenFormat}}pattern="{{.TokenFormat}}" title="Token must match pattern: {{.TokenFormat}}"{{end}} |
| 258 | + required> |
| 259 | + <button type="submit" class="primary"> |
| 260 | + {{if .HasToken}}Update Token{{else}}Save Token{{end}} |
| 261 | + </button> |
| 262 | + </form> |
| 263 | + |
| 264 | + {{if .HasToken}} |
| 265 | + <form method="POST" action="/my/tokens/delete" class="delete-form"> |
| 266 | + <input type="hidden" name="csrf_token" value="{{$.CSRFToken}}"> |
| 267 | + <input type="hidden" name="service" value="{{.Name}}"> |
| 268 | + <button type="submit" class="danger">Remove Token</button> |
| 269 | + </form> |
| 270 | + {{end}} |
228 | 271 | {{end}}
|
229 | 272 | {{else}}
|
230 | 273 | <div class="instructions">
|
|
0 commit comments