Merge remote-tracking branch 'origin/main' into nixidy

This commit is contained in:
Jonas Juselius
2024-11-18 13:24:20 +01:00
70 changed files with 10196 additions and 29 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ spec:
namespace: idp namespace: idp
sources: sources:
- repoURL: https://charts.bitnami.com/bitnami - repoURL: https://charts.bitnami.com/bitnami
targetRevision: 18.3.4 targetRevision: 24.0.2
chart: keycloak chart: keycloak
helm: helm:
valueFiles: valueFiles:
+3 -3
View File
@@ -90,12 +90,12 @@ spec:
ingress: ingress:
enabled: true enabled: true
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/ssl-redirect: "true"
atlantis.oceanbox.io/expose: internal atlantis.oceanbox.io/expose: internal
ingressClassName: nginx ingressClassName: nginx
hosts: hosts:
- host: collector.adm.oceanbox.io - host: opentelemetry-collector.adm.oceanbox.io
paths: paths:
- path: / - path: /
pathType: Prefix pathType: Prefix
@@ -103,4 +103,4 @@ spec:
tls: tls:
- secretName: collector-tls - secretName: collector-tls
hosts: hosts:
- collector.adm.oceanbox.io - opentelemetry-collector.adm.oceanbox.io
+11
View File
@@ -11,6 +11,17 @@ init:
enabled: false enabled: false
image: ubuntu:rolling image: ubuntu:rolling
command: ["/bin/sh", "-c", "true"] command: ["/bin/sh", "-c", "true"]
env:
- name: LOG_LEVEL
value: "3"
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
imagePullSecrets: imagePullSecrets:
- name: gitlab-pull-secret - name: gitlab-pull-secret
nameOverride: "" nameOverride: ""
+8
View File
@@ -17,6 +17,14 @@ init:
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "3" value: "3"
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
imagePullSecrets: imagePullSecrets:
- name: gitlab-pull-secret - name: gitlab-pull-secret
+11
View File
@@ -11,6 +11,17 @@ init:
enabled: false enabled: false
image: ubuntu:rolling image: ubuntu:rolling
command: ["/bin/sh", "-c", "true"] command: ["/bin/sh", "-c", "true"]
env:
- name: LOG_LEVEL
value: "3"
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
imagePullSecrets: imagePullSecrets:
- name: gitlab-pull-secret - name: gitlab-pull-secret
nameOverride: "" nameOverride: ""
+11
View File
@@ -11,6 +11,17 @@ init:
enabled: false enabled: false
image: ubuntu:rolling image: ubuntu:rolling
command: ["/bin/sh", "-c", "true"] command: ["/bin/sh", "-c", "true"]
env:
- name: LOG_LEVEL
value: "3"
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
imagePullSecrets: imagePullSecrets:
- name: gitlab-pull-secret - name: gitlab-pull-secret
nameOverride: "" nameOverride: ""
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 20.1.7
digest: sha256:9c9be148366bb3d50f7394ba5a33e1a00a087b5ed61d2bcf1faec9b369e76582
generated: "2024-11-16T14:23:53.686487149+01:00"
+1 -2
View File
@@ -38,8 +38,7 @@ spec:
containerPort: {{ .Values.service.port }} containerPort: {{ .Values.service.port }}
protocol: TCP protocol: TCP
env: env:
- name: LOG_LEVEL {{- toYaml .Values.env | nindent 12 }}
value: "3"
livenessProbe: livenessProbe:
httpGet: httpGet:
path: / path: /
+8
View File
@@ -17,6 +17,14 @@ init:
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "3" value: "3"
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
imagePullSecrets: imagePullSecrets:
- name: gitlab-pull-secret - name: gitlab-pull-secret
@@ -0,0 +1,32 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
annotations:
policies.kyverno.io/category: Sample
policies.kyverno.io/description: 'Access dataprotection keys from Azure Key Vault'
creationTimestamp: "2024-01-15T11:58:24Z"
name: sync-keyvault-secrets
spec:
admission: true
background: true
generateExisting: true
rules:
- generate:
apiVersion: v1
clone:
name: azure-keyvault
namespace: sorcerer
kind: Secret
name: azure-keyvault
namespace: '{{request.object.metadata.name}}'
synchronize: true
match:
any:
- resources:
kinds:
- Namespace
names:
- "*-sorcerer"
name: sync-keyvault-secrets
@@ -0,0 +1,44 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
annotations:
policies.kyverno.io/category: Sample
policies.kyverno.io/description: 'Secrets like registry credentials often need
to exist in multiple Namespaces so Pods there have access. Manually duplicating
those Secrets is time consuming and error prone. This policy will copy a Secret
called `regcred` which exists in the `default` Namespace to new Namespaces when
they are created. It will also push updates to the copied Secrets should the
source Secret be changed. '
creationTimestamp: "2024-01-15T11:58:24Z"
name: sync-oceanbox-regcred
spec:
admission: true
background: true
generateExisting: true
rules:
- generate:
apiVersion: v1
clone:
# name: oceanbox-regcred
name: gitlab-pull-secret
namespace: default
kind: Secret
# name: oceanbox-regcred
name: gitlab-pull-secret
namespace: '{{request.object.metadata.name}}'
synchronize: true
exclude:
any:
- resources:
kinds:
- Namespace
names:
- "vcluster-*"
match:
any:
- resources:
kinds:
- Namespace
name: sync-oceanbox-regcred
@@ -25,6 +25,11 @@ spec:
- "*-rabbitmq" - "*-rabbitmq"
annotations: annotations:
kyverno/clone: "true" kyverno/clone: "true"
exclude:
any:
- resources:
annotations:
vcluster.loft.sh/controlled-by: secret/v1/GenericImport
- name: sync-redis-secret - name: sync-redis-secret
generate: generate:
apiVersion: v1 apiVersion: v1
@@ -44,6 +49,11 @@ spec:
- "*-redis" - "*-redis"
annotations: annotations:
kyverno/clone: "true" kyverno/clone: "true"
exclude:
any:
- resources:
annotations:
vcluster.loft.sh/controlled-by: secret/v1/GenericImport
- name: sync-archmaester-secret - name: sync-archmaester-secret
generate: generate:
apiVersion: v1 apiVersion: v1
@@ -63,6 +73,11 @@ spec:
- "*-db-superuser" - "*-db-superuser"
annotations: annotations:
kyverno/clone: "true" kyverno/clone: "true"
exclude:
any:
- resources:
annotations:
vcluster.loft.sh/controlled-by: secret/v1/GenericImport
- name: sync-archmaester-replication-secret - name: sync-archmaester-replication-secret
generate: generate:
apiVersion: v1 apiVersion: v1
@@ -82,6 +97,11 @@ spec:
- prod-archmeister-replication - prod-archmeister-replication
annotations: annotations:
kyverno/clone: "true" kyverno/clone: "true"
exclude:
any:
- resources:
annotations:
vcluster.loft.sh/controlled-by: secret/v1/GenericImport
- name: sync-archmaester-ca - name: sync-archmaester-ca
generate: generate:
apiVersion: v1 apiVersion: v1
@@ -101,11 +121,8 @@ spec:
- prod-archmeister-ca - prod-archmeister-ca
annotations: annotations:
kyverno/clone: "true" kyverno/clone: "true"
# exclude: exclude:
# any: any:
# - resources: - resources:
# kinds: annotations:
# - Secret vcluster.loft.sh/controlled-by: secret/v1/GenericImport
# selector:
# matchLabels:
# generate.kyverno.io/clone-source: ""
@@ -0,0 +1,32 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
annotations:
policies.kyverno.io/category: Sample
policies.kyverno.io/description: 'Access dataprotection keys from Azure Key Vault'
creationTimestamp: "2024-01-15T11:58:24Z"
name: sync-keyvault-secrets
spec:
admission: true
background: true
generateExisting: true
rules:
- generate:
apiVersion: v1
clone:
name: azure-keyvault
namespace: atlantis
kind: Secret
name: azure-keyvault
namespace: '{{request.object.metadata.name}}'
synchronize: true
match:
any:
- resources:
kinds:
- Namespace
names:
- "*-atlantis"
name: sync-keyvault-secrets
+3 -5
View File
@@ -10,7 +10,7 @@ metadata:
they are created. It will also push updates to the copied Secrets should the they are created. It will also push updates to the copied Secrets should the
source Secret be changed. ' source Secret be changed. '
creationTimestamp: "2024-01-15T11:58:24Z" creationTimestamp: "2024-01-15T11:58:24Z"
name: sync-oceanbox-regcred name: sync-regcred
spec: spec:
admission: true admission: true
background: true background: true
@@ -30,10 +30,8 @@ spec:
exclude: exclude:
any: any:
- resources: - resources:
kinds: annotations:
- Namespace vcluster.loft.sh/controlled-by: secret/v1/GenericImport
names:
- "vcluster-*"
match: match:
any: any:
- resources: - resources:
@@ -1,5 +1,5 @@
apiVersion: cilium.io/v2 apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy kind: CiliumClusterwideNetworkPolicy
metadata: metadata:
name: allow-atlantis-services name: allow-atlantis-services
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
@@ -15,12 +15,12 @@ spec:
- matchLabels: - matchLabels:
k8s:io.kubernetes.pod.namespace: {{ .Values.tracing.namespace | default "otel" }} k8s:io.kubernetes.pod.namespace: {{ .Values.tracing.namespace | default "otel" }}
- toFQDNs: - toFQDNs:
- matchName: '*.oceanbox.io'
- matchName: api.github.com
- matchName: dapr.github.io - matchName: dapr.github.io
- matchName: gitlab.com
- matchPattern: '*.gitlab.com'
- matchPattern: "*.k1.itpartner.no"
- matchName: analytics.loft.rocks - matchName: analytics.loft.rocks
# - matchName: gitlab.com
# - matchName: api.github.com
- matchPattern: "*.k1.itpartner.no"
- matchPattern: '*.oceanbox.io'
# - matchPattern: '*.gitlab.com'
endpointSelector: endpointSelector:
matchLabels: {} matchLabels: {}
@@ -7,7 +7,6 @@ spec:
egress: egress:
- toFQDNs: - toFQDNs:
- matchName: oceanbox.io - matchName: oceanbox.io
- matchName: hubble.srv.oceanbox.io
- matchPattern: "*oceanbox.io" - matchPattern: "*oceanbox.io"
- matchPattern: "*.oceanbox.io" - matchPattern: "*.oceanbox.io"
@@ -14,3 +14,15 @@ spec:
- ports: - ports:
- port: "9070" - port: "9070"
protocol: TCP protocol: TCP
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: addons-to-remote-node
namespace: csi-addons-system
spec:
description: remote node
egress:
- toEntities:
- remote-node
endpointSelector: {}
+3 -2
View File
@@ -3,8 +3,9 @@
applications.xxx = { applications.xxx = {
resources = { resources = {
ciliumClusterwideNetworkPolicies = { ciliumClusterwideNetworkPolicies = {
xxx.spec = { xxx.spec =
}; {
};
}; };
}; };
}; };
+1 -1
View File
@@ -6,4 +6,4 @@ spec:
tracing: tracing:
samplingRate: "1" samplingRate: "1"
zipkin: zipkin:
endpointAddress: "http://opentelemetry-collector.otel:9411/api/v2/spans" endpointAddress: "http://opentelemetry-collector.otel.svc.cluster.local:9411/api/v2/spans"
+3
View File
@@ -91,6 +91,7 @@ staticClients:
- 'https://stig-atlantis.dev.oceanbox.io/signin-oidc' - 'https://stig-atlantis.dev.oceanbox.io/signin-oidc'
- 'https://simkir-atlantis.dev.oceanbox.io/signin-oidc' - 'https://simkir-atlantis.dev.oceanbox.io/signin-oidc'
- 'https://atlantis.local.oceanbox.io:8080/signin-oidc' - 'https://atlantis.local.oceanbox.io:8080/signin-oidc'
- 'https://atlantis.local.oceanbox.io:8085/signin-oidc'
name: 'Atlantis dev' name: 'Atlantis dev'
secret: 3QjfSPmAemjn34XVA2o1fvoS7I4gKvOR secret: 3QjfSPmAemjn34XVA2o1fvoS7I4gKvOR
- id: petimeter - id: petimeter
@@ -119,6 +120,8 @@ staticClients:
- 'https://jonas-sorcerer.ekman.oceanbox.io/signin-oidc' - 'https://jonas-sorcerer.ekman.oceanbox.io/signin-oidc'
- 'https://stig-sorcerer.ekman.oceanbox.io/signin-oidc' - 'https://stig-sorcerer.ekman.oceanbox.io/signin-oidc'
- 'https://simkir-sorcerer.ekman.oceanbox.io/signin-oidc' - 'https://simkir-sorcerer.ekman.oceanbox.io/signin-oidc'
- 'https://sorcerer.local.oceanbox.io:8080/signin-oidc'
- 'https://sorcerer.local.oceanbox.io:8085/signin-oidc'
name: 'Sorcerer dev' name: 'Sorcerer dev'
secret: cyrgDr1UzhQrJn8nRVqEt9BJ9mLk3OBy secret: cyrgDr1UzhQrJn8nRVqEt9BJ9mLk3OBy
- id: archmeister - id: archmeister
@@ -0,0 +1,18 @@
{
"version": 1,
"isRoot": true,
"tools": {
"fable": {
"version": "3.6.1",
"commands": [
"fable"
]
},
"femto": {
"version": "0.11.0",
"commands": [
"femto"
]
}
}
}
+355
View File
@@ -0,0 +1,355 @@
build/client/*
build/test/*
!build/test/__snapshots__
dist/
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
+15
View File
@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
}
]
}
+8
View File
@@ -0,0 +1,8 @@
{
"editor.detectIndentation": false,
"files.trimTrailingWhitespace": true,
"css.styleSheets": [
"https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css",
"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css"
]
}
+22
View File
@@ -0,0 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DexTemplates", "src\DexTemplates.fsproj", "{FA05EC30-6BCD-440D-AD18-4F2030BA1E83}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FA05EC30-6BCD-440D-AD18-4F2030BA1E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA05EC30-6BCD-440D-AD18-4F2030BA1E83}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA05EC30-6BCD-440D-AD18-4F2030BA1E83}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA05EC30-6BCD-440D-AD18-4F2030BA1E83}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
+24
View File
@@ -0,0 +1,24 @@
# Oceanbox IdP
```
npm install && npm start
```
Other commands:
```bash
npm test # Run tests
npm run test:watch # Run tests in watch mode
npm test -- --update-snapshots # Update test snapshots
npm run build # Build optimized site for deployment and put in dist/
```
## Vite.js repository structure conventions
- Put static files in `public/` folder
- Put `index.html` in app root (next to `package.json`)
- Add a reference to the entry JS file (relative path is important):
```html
<script type="module" src="./build/client/App.js"></script>
```
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
server="root@fs1-0"
path="/vol/brick0/nfs0/k1/pv-oceanbox-dex"
dest="$server:$path"
index=$(basename dist/assets/index-*.js)
ssh $server -- rm $path/static/js/*.js
scp dist/assets/*.js $dest/static/js/
sed -r "s/@index@/$index/" ./dex/templates/login.html > login.html.$$
scp ./dex/templates/* $dest/templates/
scp ./dex/static/*.* $dest/static/
scp login.html.$$ $dest/templates/login.html
rm login.html.$$
ssh admin@k1-0.itpartner.intern -- kubectl rollout restart -n oceanbox deployment/dex
@@ -0,0 +1,17 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="180.000000pt" height="180.000000pt" viewBox="0 0 180.000000 180.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,180.000000) scale(0.100000,-0.100000)"
fill="#4169E1" stroke="none">
<path d="M580 1422 l-315 -117 3 -214 c4 -298 25 -400 113 -548 73 -122 257
-285 302 -267 11 4 157 326 157 347 0 3 -16 11 -35 17 -54 18 -122 92 -140
152 -19 65 -19 93 0 149 56 165 256 222 386 110 77 -65 107 -169 74 -260 -22
-64 -52 -99 -111 -132 -30 -17 -54 -37 -54 -45 0 -26 133 -336 147 -341 25
-10 58 6 128 62 122 97 210 219 255 355 32 96 39 150 46 391 l6 219 -33 14
c-48 20 -606 226 -610 226 -2 -1 -146 -54 -319 -118z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 861 B

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" height="1000" width="785.714">
<path d="M454.77 479.386q4.464 35.154 -28.179 56.358t-62.217 3.348q-21.762 -9.486 -29.853 -32.364t-.279 -45.756 29.016 -32.364q20.088 -10.044 40.455 -6.696t35.712 19.809 15.345 37.665zm61.938 -11.718q-7.812 -59.706 -63.054 -91.512t-109.926 -7.254q-35.154 15.624 -56.079 49.383t-19.251 72.261q2.232 50.778 43.245 86.49t92.349 31.248q50.778 -4.464 84.816 -46.872t27.9 -93.744zm133.362 -302.436q-11.16 -15.066 -31.248 -24.831t-32.364 -12.276 -39.618 -6.975q-162.378 -26.226 -315.828 1.116 -23.994 3.906 -36.828 6.696t-30.69 12.276 -27.9 23.994q16.74 15.624 42.408 25.389t41.013 12.276 48.825 6.417q127.224 16.182 249.984 .558 35.154 -4.464 49.941 -6.696t40.455 -11.997 41.85 -25.947zm31.806 577.53q-4.464 14.508 -8.649 42.687t-7.812 46.872 -15.903 39.06 -32.364 31.527q-47.988 26.784 -105.741 39.897t-112.716 12.276 -112.437 -10.323q-25.668 -4.464 -45.477 -10.044t-42.687 -15.066 -40.734 -24.273 -29.016 -34.317q-13.95 -53.568 -31.806 -162.936l3.348 -8.928 10.044 -5.022q124.434 82.584 282.627 82.584t283.185 -82.584q11.718 3.348 13.392 12.834t-2.79 25.11 -4.464 20.646zm100.998 -536.238q-14.508 93.186 -61.938 365.49 -2.79 16.74 -15.066 31.248t-24.273 22.32 -30.411 17.298q-140.616 70.308 -340.38 49.104 -138.384 -15.066 -219.852 -77.562 -8.37 -6.696 -14.229 -14.787t-9.486 -19.53 -5.022 -18.972 -3.348 -22.041 -3.069 -19.53q-5.022 -27.9 -14.787 -83.7t-15.624 -90.117 -13.113 -82.305 -12.276 -88.164q1.674 -14.508 9.765 -27.063t17.577 -20.925 25.11 -16.74 25.668 -12.555 26.784 -10.323q69.75 -25.668 174.654 -35.712 211.482 -20.646 377.208 27.9 86.49 25.668 119.97 68.076 8.928 11.16 9.207 28.458t-3.069 30.132z" fill="#FFFFFF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="27px" height="21px" viewBox="0 0 27 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>Shape</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="email-logo" fill-rule="nonzero" fill="#ffffff">
<path d="M0.5,0.3 L0.5,20.6 L26.5,20.6 L26.5,0.3 L0.5,0.3 Z M23,2.3 L13.4,11.6 L4,2.3 L23,2.3 Z M2.5,18.7 L2.5,3.7 L13.5,14.4 L24.5,3.7 L24.5,18.7 L2.5,18.7 Z" id="Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 730 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="enable-background:new 0 0 640 640" xml:space="preserve" width="32" height="32"><path style="fill:#fff" d="m395.9 484.2-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8 17.2 8.3 27.1 13 27.1 13l-.1-109.2 16.7-.1.1 117.1s57.4 24.2 83.1 40.1c3.7 2.3 10.2 6.8 12.9 14.4 2.1 6.1 2 13.1-1 19.3l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12z"/><path style="fill:#609926" d="M622.7 149.8c-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.3.3-26.5.6-39.6.7v117.2c-5.5-2.6-11.1-5.3-16.6-7.9 0-36.4-.1-109.2-.1-109.2-29 .4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5c-9.8-.6-22.5-2.1-39 1.5-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6zM125.6 353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1s7.1 59.4 15.7 94.2c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1zm300.3 107.6s-6.1 14.5-19.6 15.4c-5.8.4-10.3-1.2-10.3-1.2s-.3-.1-5.3-2.1l-112.9-55s-10.9-5.7-12.8-15.6c-2.2-8.1 2.7-18.1 2.7-18.1L322 273s4.8-9.7 12.2-13c.6-.3 2.3-1 4.5-1.5 8.1-2.1 18 2.8 18 2.8L467.4 315s12.6 5.7 15.3 16.2c1.9 7.4-.5 14-1.8 17.2-6.3 15.4-55 113.1-55 113.1z"/><path style="fill:#609926" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59 0.4 0.07 0.55-0.17 0.55-0.38 0-0.19-0.01-0.82-0.01-1.49-2.01 0.37-2.53-0.49-2.69-0.94-0.09-0.23-0.48-0.94-0.82-1.13-0.28-0.15-0.68-0.52-0.01-0.53 0.63-0.01 1.08 0.58 1.23 0.82 0.72 1.21 1.87 0.87 2.33 0.66 0.07-0.52 0.28-0.87 0.51-1.07-1.78-0.2-3.64-0.89-3.64-3.95 0-0.87 0.31-1.59 0.82-2.15-0.08-0.2-0.36-1.02 0.08-2.12 0 0 0.67-0.21 2.2 0.82 0.64-0.18 1.32-0.27 2-0.27 0.68 0 1.36 0.09 2 0.27 1.53-1.04 2.2-0.82 2.2-0.82 0.44 1.1 0.16 1.92 0.08 2.12 0.51 0.56 0.82 1.27 0.82 2.15 0 3.07-1.87 3.75-3.65 3.95 0.29 0.25 0.54 0.73 0.54 1.48 0 1.07-0.01 1.93-0.01 2.2 0 0.21 0.15 0.46 0.55 0.38C13.71 14.53 16 11.53 16 8 16 3.58 12.42 0 8 0z" />
</svg>

After

Width:  |  Height:  |  Size: 913 B

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="500px" height="500px" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->
<title>logo-square</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="logo-square" sketch:type="MSArtboardGroup">
<g id="logo-no-bg" sketch:type="MSLayerGroup" transform="translate(2.000000, 19.000000)">
<g id="Page-1" sketch:type="MSShapeGroup">
<g id="gitlab_logo">
<g id="g10" transform="translate(248.000000, 228.833300) scale(1, -1) translate(-248.000000, -228.833300) translate(0.000000, 0.333300)">
<g id="g16">
<g id="g18-Clipped">
<g id="g18">
<g>
<g id="Group" transform="translate(0.666658, 0.666658)">
<g id="g44" transform="translate(0.532000, 0.774933)" fill="#FC6D26">
<path d="M491.999988,194.666662 L464.441322,279.481326 L409.82399,447.578655 C407.014656,456.226655 394.778657,456.226655 391.96799,447.578655 L337.349325,279.481326 L155.982663,279.481326 L101.362664,447.578655 C98.5533309,456.226655 86.3173312,456.226655 83.5066646,447.578655 L28.8893326,279.481326 L1.33199997,194.666662 C-1.18266664,186.930662 1.57199996,178.455996 8.1519998,173.674662 L246.665327,0.385333324 L485.179988,173.674662 C491.759988,178.455996 494.513321,186.930662 491.999988,194.666662" id="path46"></path>
</g>
<g id="g48" transform="translate(156.197863, 1.160267)" fill="#E24329">
<path d="M90.9999977,0 L90.9999977,0 L181.683995,279.095993 L0.31599997,279.095993 L90.9999977,0 L90.9999977,0 Z" id="path50"></path>
</g>
<g id="g56" transform="translate(28.531199, 1.160800)" fill="#FC6D26">
<path d="M218.666661,0 L127.982663,279.09466 L0.890666644,279.09466 L218.666661,0 L218.666661,0 Z" id="path58"></path>
</g>
<g id="g64" transform="translate(0.088533, 0.255867)" fill="#FCA326">
<path d="M29.3333326,279.999993 L29.3333326,279.999993 L1.77466662,195.185328 C-0.738666648,187.449329 2.01466662,178.974662 8.59599979,174.194662 L247.109327,0.905333311 L29.3333326,279.999993 L29.3333326,279.999993 Z" id="path66"></path>
</g>
<g id="g72" transform="translate(29.421866, 280.255593)" fill="#E24329">
<path d="M0,0 L127.091997,0 L72.4733315,168.097329 C69.6626649,176.746662 57.4266652,176.746662 54.617332,168.097329 L0,0 L0,0 Z" id="path74"></path>
</g>
<g id="g76" transform="translate(247.197860, 1.160800)" fill="#FC6D26">
<path d="M0,0 L90.6839977,279.09466 L217.775995,279.09466 L0,0 L0,0 Z" id="path78"></path>
</g>
<g id="g80" transform="translate(246.307061, 0.255867)" fill="#FCA326">
<path d="M218.666661,279.999993 L218.666661,279.999993 L246.225327,195.185328 C248.73866,187.449329 245.985327,178.974662 239.403994,174.194662 L0.890666644,0.905333311 L218.666661,279.999993 L218.666661,279.999993 Z" id="path82"></path>
</g>
<g id="g84" transform="translate(336.973725, 280.255593)" fill="#E24329">
<path d="M127.999997,0 L0.907999977,0 L55.5266653,168.097329 C58.3373319,176.746662 70.5733316,176.746662 73.3826648,168.097329 L127.999997,0 L127.999997,0 Z" id="path86"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>logo_googleg_48dp</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="logo_googleg_48dp">
<path d="M17.64,9.20454545 C17.64,8.56636364 17.5827273,7.95272727 17.4763636,7.36363636 L9,7.36363636 L9,10.845 L13.8436364,10.845 C13.635,11.97 13.0009091,12.9231818 12.0477273,13.5613636 L12.0477273,15.8195455 L14.9563636,15.8195455 C16.6581818,14.2527273 17.64,11.9454545 17.64,9.20454545 L17.64,9.20454545 Z" id="Shape" fill="#4285F4" fill-rule="nonzero"></path>
<path d="M9,18 C11.43,18 13.4672727,17.1940909 14.9563636,15.8195455 L12.0477273,13.5613636 C11.2418182,14.1013636 10.2109091,14.4204545 9,14.4204545 C6.65590909,14.4204545 4.67181818,12.8372727 3.96409091,10.71 L0.957272727,10.71 L0.957272727,13.0418182 C2.43818182,15.9831818 5.48181818,18 9,18 L9,18 Z" id="Shape" fill="#34A853" fill-rule="nonzero"></path>
<path d="M3.96409091,10.71 C3.78409091,10.17 3.68181818,9.59318182 3.68181818,9 C3.68181818,8.40681818 3.78409091,7.83 3.96409091,7.29 L3.96409091,4.95818182 L0.957272727,4.95818182 C0.347727273,6.17318182 0,7.54772727 0,9 C0,10.4522727 0.347727273,11.8268182 0.957272727,13.0418182 L3.96409091,10.71 L3.96409091,10.71 Z" id="Shape" fill="#FBBC05" fill-rule="nonzero"></path>
<path d="M9,3.57954545 C10.3213636,3.57954545 11.5077273,4.03363636 12.4404545,4.92545455 L15.0218182,2.34409091 C13.4631818,0.891818182 11.4259091,0 9,0 C5.48181818,0 2.43818182,2.01681818 0.957272727,4.95818182 L3.96409091,7.29 C4.67181818,5.16272727 6.65590909,3.57954545 9,3.57954545 L9,3.57954545 Z" id="Shape" fill="#EA4335" fill-rule="nonzero"></path>
<polygon id="Shape" points="0 0 18 0 18 18 0 18"></polygon>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,12 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="-10 0 210 185">
<defs>
<style>.cls-1{opacity:0.98;}.cls-2{fill:#ed1944;}</style>
</defs>
<title>OpenStack_Logo_Mark</title>
<g class="cls-1">
<path class="cls-2" d="M461.82,215.24h-150a17.17,17.17,0,0,0-17.12,17.12v40.35h41.61v-6.59a9.26,9.26,0,0,1,9.26-9.26h82.53a9.26,9.26,0,0,1,9.26,9.26v6.59H479V232.36A17.18,17.18,0,0,0,461.82,215.24Z" transform="translate(-294.67 -215.24)"/>
<path class="cls-2" d="M437.33,344.72a9.27,9.27,0,0,1-9.26,9.26H345.54a9.27,9.27,0,0,1-9.26-9.26v-6.59H294.67v40.34a17.17,17.17,0,0,0,17.12,17.13h150A17.18,17.18,0,0,0,479,378.47V338.13H437.33Z" transform="translate(-294.67 -215.24)"/>
<rect class="cls-2" y="69.37" width="41.62" height="41.62"/>
<rect class="cls-2" x="142.66" y="69.37" width="41.62" height="41.62"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 905 B

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="21px" height="17px" viewBox="0 0 21 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>Combined-Shape</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="login_logo" fill-rule="nonzero" fill="#ffffff">
<path d="M20.9998732,0 L21,16.8 L3.15,15.75 L3.15,11.025 L4.725,11.025 L4.725,14.175 L19.425,15.225 L19.425,1.575 L4.725,2.625 L4.725,5.775 L3.15,5.775 L3.15,1.05 L20.9998732,0 Z M10.4273448,11.5821438 L12.8956645,9.26892989 L0,9.26892989 L0,7.57550094 L12.8956645,7.57550094 L10.4273448,5.26641726 L11.39466,4.2 L15.5772664,8.40226079 L11.4497226,12.6045216 L10.4273448,11.5821438 Z" id="Combined-Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 973 B

@@ -0,0 +1 @@
<?xml version="1.0" ?><svg style="enable-background:new 0 0 48 48;" version="1.1" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Icons"><g id="Icons_3_"><g><path d="M34.9549,10.525h-21.91c-1.3899,0-2.5199,1.13-2.5199,2.52v21.91c0,1.39,1.13,2.52,2.5199,2.52 h21.91c1.3901,0,2.5201-1.13,2.5201-2.52V13.0449C37.475,11.655,36.345,10.525,34.9549,10.525z M19.415,31.335 c-0.95-0.01-1.9101-0.01-2.8701,0c-0.18,0-0.23-0.05-0.23-0.24v-10.14c0-0.19,0.06-0.24,0.24-0.24 c0.95,0.01,1.9101,0.01,2.8601,0c0.1899,0,0.24,0.06,0.23,0.24v5.08c0,1.69,0,3.3799,0.01,5.07 C19.655,31.285,19.595,31.335,19.415,31.335z M17.9849,19.3549c-1.06,0.0101-1.93-0.8799-1.93-1.9299 c0.01-1.0101,0.7801-1.92,1.9201-1.93c1.0799-0.01,1.94,0.81,1.94,1.93C19.915,18.525,19.0749,19.345,17.9849,19.3549z M31.645,31.335h-2.81c-0.2301,0-0.24-0.01-0.24-0.25v-5.14c0-0.48-0.01-0.96-0.1501-1.43c-0.2199-0.73-0.69-1.08-1.46-1.1001 c-0.54-0.0099-1.05,0.0901-1.43,0.5101c-0.31,0.33-0.44,0.73-0.5,1.17c-0.0399,0.3899-0.07,0.79-0.07,1.19 c-0.0099,1.61-0.0099,3.22,0,4.8199c0,0.1801-0.05,0.2301-0.2199,0.2301c-0.9601-0.01-1.93-0.01-2.8901,0 c-0.1699,0-0.2299-0.05-0.2299-0.2301c0.01-3.3799,0.01-6.7699,0-10.1599c0-0.18,0.07-0.23,0.2299-0.23 c0.92,0.01,1.8401,0.01,2.7601,0c0.1799,0,0.2399,0.07,0.2299,0.24c-0.01,0.37,0,0.75,0,1.12 c0.5201-0.77,1.2201-1.26,2.1001-1.48c1.0199-0.25,2.0299-0.17,2.99,0.25c0.93,0.4,1.43,1.16,1.69,2.1 c0.18,0.61,0.26,1.24,0.27,1.88c0.0099,2.07,0.0199,4.14,0.03,6.22C31.9449,31.335,31.9449,31.335,31.645,31.335z" style="fill:#0097D3;"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="439" width="439">
<rect height="439" width="439" fill="#f3f3f3"/>
<rect height="194" width="194" x="17" y="17" fill="#F35325"/>
<rect height="194" width="194" x="228" y="17" fill="#81BC06"/>
<rect height="194" width="194" x="17" y="228" fill="#05A6F0"/>
<rect height="194" width="194" x="228" y="228" fill="#FFBA08"/>
</svg>

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 KiB

@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="openid.svg"
version="1.0"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<title
id="title2910">facebook web</title>
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 128 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="256 : 128 : 1"
inkscape:persp3d-origin="128 : 85.333333 : 1"
id="perspective17" />
<linearGradient
inkscape:collect="always"
id="linearGradient2555">
<stop
style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
offset="0"
id="stop2557" />
<stop
style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
offset="1"
id="stop2559" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2555"
id="linearGradient2449"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.5914584,0,0,0.5914584,210.02161,142.23241)"
x1="-344.15295"
y1="274.711"
x2="-395.84943"
y2="425.39993" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.24748737"
inkscape:cx="-276.99783"
inkscape:cy="104.86584"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="712"
inkscape:window-height="762"
inkscape:window-x="1"
inkscape:window-y="193"
showgrid="false"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>facebook web</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>User:ZyMOS</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag />
</dc:subject>
<cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
<dc:description />
<dc:contributor>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:contributor>
<dc:publisher>
<cc:Agent>
<dc:title>Open Icon Library</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-373.642,-318.344)">
<rect
inkscape:export-ydpi="7.7063322"
inkscape:export-xdpi="7.7063322"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
transform="scale(-1,1)"
ry="35.487503"
rx="35.487503"
y="328.34399"
x="-619.64203"
height="236"
width="236"
id="rect1942"
style="fill:#ebebee;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,1;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:export-ydpi="7.7063322"
inkscape:export-xdpi="7.7063322"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
sodipodi:nodetypes="ccccsssc"
id="path1950"
d="M 557.29062,338.43314 L 445.99327,338.43314 C 416.53255,338.43314 392.81507,362.34527 392.81507,392.04777 L 392.81507,500.64007 C 393.76867,523.8254 397.43678,509.16812 404.41887,483.49194 C 412.53354,453.65102 438.96056,427.56963 471.144,408.02312 C 495.7086,393.10398 523.20395,383.5772 573.25282,382.6709 C 601.63697,382.15694 599.13112,345.83025 557.29062,338.43314 z"
style="opacity:0.98283262;fill:url(#linearGradient2449);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87500000000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.87500000000000000, 1.75000000000000000;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:#ff8e00;fill-opacity:1;stroke:none"
d="m 488.0825,538.40564 26.93006,-19.41471 -1.2525,-154.06511 -25.67756,20.04099 0,153.43883 z"
id="path25468" />
<path
style="fill:#626262;fill-opacity:1;stroke:none"
d="M 488.39564,538.40564 C 387.66591,522.39153 384.79535,434.69468 487.76935,415.65457 l 0.31315,18.16215 c -73.04418,12.17854 -63.78999,77.70661 0,87.36619 l 0.31314,17.22273 z"
id="path25470"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#626262;fill-opacity:1;stroke:none"
d="m 514.69946,433.19044 c 12.45669,0.0847 23.30841,5.78683 34.13233,11.58619 l -15.97017,11.89934 51.04191,0 0.3131,-34.75859 -15.97018,11.89934 c -16.16175,-8.16308 -31.01691,-17.95941 -53.54699,-18.16215 l 0,17.53587 z"
id="path25472"
sodipodi:nodetypes="cccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="21px" height="17px" viewBox="0 0 21 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>Combined-Shape</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="login_logo" fill-rule="nonzero" fill="#ffffff">
<path d="M20.9998732,0 L21,16.8 L3.15,15.75 L3.15,11.025 L4.725,11.025 L4.725,14.175 L19.425,15.225 L19.425,1.575 L4.725,2.625 L4.725,5.775 L3.15,5.775 L3.15,1.05 L20.9998732,0 Z M10.4273448,11.5821438 L12.8956645,9.26892989 L0,9.26892989 L0,7.57550094 L12.8956645,7.57550094 L10.4273448,5.26641726 L11.39466,4.2 L15.5772664,8.40226079 L11.4497226,12.6045216 L10.4273448,11.5821438 Z" id="Combined-Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 973 B

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{ issuer }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/dex/static/main.css" rel="stylesheet">
<link href="/dex/theme/styles.css" rel="stylesheet">
<link rel="icon" href="/dex/theme/favicon.png"">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.88/dist/themes/light.css" />
<!-- Used to hide custom components until they are defined and prevent a flash of unstyled content -->
<style>
*:not(:defined) { display:none }
html, body {
overflow-y: hidden;
height: 100%;
}
</style>
</head>
<body class="theme-body" onpageshow="delayRedirect()">
<div class="theme-navbar">
<div class="theme-navbar__logo-wrap">
<img class="theme-navbar__logo" src="/dex/theme/logo.png">
</div>
</div>
<div class="dex-container">
<h2>You have been logged out.</h2>
Yoy will be redirected in a moment.
</div>
<script>
function redirect() {
document.location.href = document.referrer;
}
function delayRedirect() {
setTimeout(redirect, 2000);
}
</script>
</body>
</html>
+148
View File
@@ -0,0 +1,148 @@
* {
box-sizing: border-box;
}
body {
margin: 0;
}
.dex-container {
color: #333;
margin: 45px auto;
max-width: 500px;
min-width: 320px;
/* text-align: center; */
}
.dex-btn {
border-radius: 4px;
border: 0;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 1px rgba(0, 0, 0, 0.25);
cursor: pointer;
font-size: 16px;
padding: 0;
}
.dex-btn:focus {
outline: none;
}
.dex-btn:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
outline: none;
}
.dex-btn-icon {
background-position: center;
background-repeat: no-repeat;
background-size: 24px;
border-radius: 4px 0 0 4px;
float: left;
height: 36px;
margin-right: 5px;
width: 36px;
}
.dex-btn-icon--google {
background-color: #FFFFFF;
background-image: url(../static/img/google-icon.svg);;
}
.dex-btn-icon--local {
background-color: #84B6EF;
background-image: url(../static/img/email-icon.svg);
}
.dex-btn-icon--gitea {
background-color: #F5F5F5;
background-image: url(../static/img/gitea-icon.svg);
}
.dex-btn-icon--github {
background-color: #F5F5F5;
background-image: url(../static/img/github-icon.svg);
}
.dex-btn-icon--gitlab {
background-color: #F5F5F5;
background-image: url(../static/img/gitlab-icon.svg);
background-size: contain;
}
.dex-btn-icon--keystone {
background-color: #F5F5F5;
background-image: url(../static/img/keystone-icon.svg);
background-size: contain;
}
.dex-btn-icon--oidc {
background-color: #EBEBEE;
background-image: url(../static/img/oidc-icon.svg);
background-size: contain;
}
.dex-btn-icon--bitbucket-cloud {
background-color: #205081;
background-image: url(../static/img/bitbucket-icon.svg);
}
.dex-btn-icon--atlassian-crowd {
background-color: #CFDCEA;
background-image: url(../static/img/atlassian-crowd-icon.svg);
}
.dex-btn-icon--ldap {
background-color: #84B6EF;
background-image: url(../static/img/ldap-icon.svg);
}
.dex-btn-icon--saml {
background-color: #84B6EF;
background-image: url(../static/img/saml-icon.svg);
}
.dex-btn-icon--linkedin {
background-image: url(../static/img/linkedin-icon.svg);
background-size: contain;
}
.dex-btn-icon--microsoft {
background-image: url(../static/img/microsoft-icon.svg);
}
.dex-btn-text {
font-weight: 600;
line-height: 36px;
padding: 6px 12px;
text-align: center;
}
.dex-subtle-text {
color: #999;
font-size: 12px;
}
.dex-separator {
color: #999;
}
.dex-list {
color: #999;
display: inline-block;
font-size: 12px;
list-style: circle;
text-align: left;
}
.dex-error-box {
background-color: #DD1327;
color: #fff;
font-size: 14px;
font-weight: normal;
max-width: 320px;
padding: 4px 0;
}
.dex-error-box {
margin: 20px auto;
}
@@ -0,0 +1,44 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">Grant Access</h2>
<hr class="dex-separator">
<div>
{{ if .Scopes }}
<div class="dex-subtle-text">{{ .Client }} would like to:</div>
<ul class="dex-list">
{{ range $scope := .Scopes }}
<li>{{ $scope }}</li>
{{ end }}
</ul>
{{ else }}
<div class="dex-subtle-text">{{ .Client }} has not requested any personal information</div>
{{ end }}
</div>
<hr class="dex-separator">
<div>
<div class="theme-form-row">
<form method="post">
<input type="hidden" name="req" value="{{ .AuthReqID }}"/>
<input type="hidden" name="approval" value="approve">
<button type="submit" class="dex-btn theme-btn--success">
<span class="dex-btn-text">Grant Access</span>
</button>
</form>
</div>
<div class="theme-form-row">
<form method="post">
<input type="hidden" name="req" value="{{ .AuthReqID }}"/>
<input type="hidden" name="approval" value="rejected">
<button type="submit" class="dex-btn theme-btn-provider">
<span class="dex-btn-text">Cancel</span>
</button>
</form>
</div>
</div>
</div>
{{ template "footer.html" . }}
@@ -0,0 +1,23 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">Enter User Code</h2>
<form method="post" action="{{ .PostURL }}" method="get">
<div class="theme-form-row">
{{ if( .UserCode )}}
<input tabindex="2" required id="user_code" name="user_code" type="text" class="theme-form-input" autocomplete="off" value="{{.UserCode}}" {{ if .Invalid }} autofocus {{ end }}/>
{{ else }}
<input tabindex="2" required id="user_code" name="user_code" type="text" class="theme-form-input" placeholder="XXXX-XXXX" autocomplete="off" {{ if .Invalid }} autofocus {{ end }}/>
{{ end }}
</div>
{{ if .Invalid }}
<div id="login-error" class="dex-error-box">
Invalid or Expired User Code
</div>
{{ end }}
<button tabindex="3" id="submit-login" type="submit" class="dex-btn theme-btn--primary">Submit</button>
</form>
</div>
{{ template "footer.html" . }}
@@ -0,0 +1,8 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">Login Successful for {{ .ClientName }}</h2>
<p>Return to your device to continue</p>
</div>
{{ template "footer.html" . }}
@@ -0,0 +1,8 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">{{ .ErrType }}</h2>
<p>{{ .ErrMsg }}</p>
</div>
{{ template "footer.html" . }}
@@ -0,0 +1,3 @@
</div>
</body>
</html>
@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{ issuer }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="{{ url .ReqPath "static/main.css" }}" rel="stylesheet">
<link href="{{ url .ReqPath "theme/styles.css" }}" rel="stylesheet">
<link rel="icon" href="{{ url .ReqPath "theme/favicon.png" }}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.88/dist/themes/light.css" />
<!-- <script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.88/dist/shoelace.js"></script> -->
<!-- Used to hide custom components until they are defined and prevent a flash of unstyled content -->
<style>
*:not(:defined) { display:none }
html, body {
overflow-y: hidden;
height: 100%;
}
</style>
</head>
<body class="theme-body">
<div class="theme-navbar">
<div class="theme-navbar__logo-wrap">
<img class="theme-navbar__logo" src="{{ url .ReqPath logo }}">
</div>
</div>
<div class="dex-container">
@@ -0,0 +1,10 @@
{{ template "header.html" . }}
{{ range $c := .Connectors }}
<a href="{{ $c.URL }}" target="_self" id="{{ $c.Name }}" hidden></a>
{{ end }}
<login-app></login-app>
<script type="module" crossorigin src="/dex/static/js/@index@"></script>
{{ template "footer.html" . }}
@@ -0,0 +1,9 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">Login Successful</h2>
<p>Please copy this code, switch to your application and paste it there:</p>
<input type="text" class="theme-form-input" value="{{ .Code }}" />
</div>
{{ template "footer.html" . }}
@@ -0,0 +1,35 @@
{{ template "header.html" . }}
<div class="theme-panel">
<h2 class="theme-heading">Log in to Your Account</h2>
<form method="post" action="{{ .PostURL }}">
<div class="theme-form-row">
<div class="theme-form-label">
<label for="userid">{{ .UsernamePrompt }}</label>
</div>
<input tabindex="1" required id="login" name="login" type="text" class="theme-form-input" placeholder="{{ .UsernamePrompt | lower }}" {{ if .Username }} value="{{ .Username }}" {{ else }} autofocus {{ end }}/>
</div>
<div class="theme-form-row">
<div class="theme-form-label">
<label for="password">Password</label>
</div>
<input tabindex="2" required id="password" name="password" type="password" class="theme-form-input" placeholder="password" {{ if .Invalid }} autofocus {{ end }}/>
</div>
{{ if .Invalid }}
<div id="login-error" class="dex-error-box">
Invalid {{ .UsernamePrompt }} and password.
</div>
{{ end }}
<button tabindex="3" id="submit-login" type="submit" class="dex-btn theme-btn--primary">Login</button>
</form>
{{ if .BackLink }}
<div class="theme-link-back">
<a class="dex-subtle-text" href="{{ .BackLink }}">Select another login method.</a>
</div>
{{ end }}
</div>
{{ template "footer.html" . }}
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -0,0 +1,122 @@
.theme-body {
background-color: #0f1218;
color: #c8d1d9;
font-family: 'Source Sans Pro', Helvetica, sans-serif;
}
.theme-navbar {
background-color: #161b22;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
color: #161B2B;
font-size: 13px;
font-weight: 100;
height: 46px;
overflow: hidden;
padding: 0 10px;
}
.theme-navbar__logo-wrap {
display: inline-block;
height: 100%;
overflow: hidden;
padding: 10px 15px;
width: 300px;
}
.theme-navbar__logo {
height: 100%;
max-height: 25px;
}
.theme-heading {
font-size: 20px;
font-weight: 500;
margin-top: 0;
color: #c8d1d9;
}
.theme-panel {
background-color: #161b22;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
padding: 30px;
}
.theme-btn-provider {
background-color: #1e242d;
color: #c8d1d9;
border: 1px solid #30373c;
min-width: 250px;
}
.theme-btn-provider:hover {
background-color: #212731;
color: #ffffff;
}
.theme-btn--primary {
background-color: #1e242d;
border: none;
color: #c8d1d9;
min-width: 200px;
padding: 6px 12px;
}
.theme-btn--primary:hover {
background-color: #212731;
color: #e9e9e9;
}
.theme-btn--success {
background-color: #1891bb;
color: #e9e9e9;
width: 250px;
}
.theme-btn--success:hover {
background-color: #1da5d4;
}
.theme-form-row {
display: block;
margin: 20px auto;
}
.theme-form-input {
display: block;
height: 36px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
border: 1px solid #515559;
border-radius: 4px;
color: #c8d1d9;
background-color: #0f1218;
box-shadow: inset 0 1px 1px rgb(27, 40, 46);
width: 250px;
margin: auto;
}
.theme-form-input:focus,
.theme-form-input:active {
outline: none;
border-color: #f8f9f9;
color: #c8d1d9;
}
.theme-form-label {
width: 250px;
margin: 4px auto;
text-align: left;
position: relative;
font-size: 13px;
font-weight: 600;
color: #c8d1d9;
}
.theme-link-back {
margin-top: 4px;
}
.dex-container {
color: #c8d1d9;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -0,0 +1,113 @@
.theme-body {
background-color: #efefef;
color: #333;
font-family: 'Source Sans Pro', Helvetica, sans-serif;
}
.theme-navbar {
background-color: #fff;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
color: #333;
font-size: 13px;
font-weight: 100;
height: 46px;
overflow: hidden;
padding: 0 10px;
}
.theme-navbar__logo-wrap {
display: inline-block;
height: 100%;
overflow: hidden;
padding: 10px 15px;
width: 300px;
}
.theme-navbar__logo {
height: 100%;
max-height: 25px;
}
.theme-heading {
font-size: 20px;
font-weight: 500;
margin-bottom: 10px;
margin-top: 0;
}
.theme-panel {
background-color: #fff;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
padding: 30px;
}
.theme-btn-provider {
background-color: #fff;
color: #333;
min-width: 250px;
}
.theme-btn-provider:hover {
color: #999;
}
.theme-btn--primary {
background-color: #333;
border: none;
color: #fff;
min-width: 200px;
padding: 6px 12px;
}
.theme-btn--primary:hover {
background-color: #666;
color: #fff;
}
.theme-btn--success {
background-color: #2FC98E;
color: #fff;
width: 250px;
}
.theme-btn--success:hover {
background-color: #49E3A8;
}
.theme-form-row {
display: block;
margin: 20px auto;
}
.theme-form-input {
border-radius: 4px;
border: 1px solid #CCC;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
color: #666;
display: block;
font-size: 14px;
height: 36px;
line-height: 1.42857143;
margin: auto;
padding: 6px 12px;
width: 250px;
}
.theme-form-input:focus,
.theme-form-input:active {
border-color: #66AFE9;
outline: none;
}
.theme-form-label {
font-size: 13px;
font-weight: 600;
margin: 4px auto;
position: relative;
text-align: left;
width: 250px;
}
.theme-link-back {
margin-top: 4px;
}
+29
View File
@@ -0,0 +1,29 @@
<!doctype html>
<html lang="en">
<head>
<title>Ocanbox IdP</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.88/dist/themes/light.css" />
<!-- <script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.88/dist/shoelace.js"></script> -->
<!-- Used to hide custom components until they are defined and prevent a flash of unstyled content -->
<style>
*:not(:defined) { display:none }
html, body {
overflow-y: hidden;
height: 100%;
}
</style>
</head>
<body>
<login-app></login-app>
<script type="module" src="./build/client/App.js"></script>
</body>
</html>
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
{
"private": true,
"scripts": {
"install": "dotnet tool restore",
"build": "dotnet fable src -o build/client --run vite build",
"start": "dotnet fable watch src -s -o build/client --run vite"
},
"dependencies": {
"@shoelace-style/shoelace": "^2.0.0-beta.88",
"lit": "^2.0.0"
},
"devDependencies": {
"@web/test-runner": "^0.13.18",
"@web/test-runner-commands": "^0.5.13",
"vite": "^4.0.0"
}
}
+129
View File
@@ -0,0 +1,129 @@
module Lit.TodoMVC.App
open Browser.WebStorage
open Fable.Core.JsInterop
open Lit
// importAll "@shoelace-style/shoelace/dist/themes/light.css?inline"
importDefault "@shoelace-style/shoelace/dist/components/button/button.js"
importDefault "@shoelace-style/shoelace/dist/components/icon/icon.js"
importDefault "@shoelace-style/shoelace/dist/components/input/input.js"
importDefault "@shoelace-style/shoelace/dist/components/card/card.js"
importDefault "@shoelace-style/shoelace/dist/components/checkbox/checkbox.js"
import "setBasePath" "@shoelace-style/shoelace/dist/utilities/base-path.js"
// [<Emit("setBasePath($0)")>]
// let setBasePath (_: string): unit = jsNative
// setBasePath "/dex/static/shoelace/dist"
[<LitElement("login-app")>]
let MyApp() =
let _ = LitElement.init(fun cfg ->
cfg.useShadowDom <- true
)
let uid, setUid = Hook.useState ""
let amnesia, setAmnesia = Hook.useState false
let splitUid (x: string) =
let s = x.Split '@'
if s.Length = 1 then
x, "default"
else
x, s[1]
let getTenanatAnchor tenant =
let e = Browser.Dom.document.getElementById tenant
if isNull e then
Browser.Dom.document.getElementById "default"
else
e
let gotoIdentityProvider _ =
let uid' =
if uid = "" then
localStorage["user_id"]
else uid
let user, tenant = splitUid uid'
let a = getTenanatAnchor tenant
let href = a.attributes[0]
let hint =
if href.value.Contains "?" then
"&login_hint"
else
"?login_hint"
href.value <- $"{href.value}{hint}={user}"
if not amnesia then
localStorage["user_id"] <- user
a.click()
let onEnter e =
let key = e?key
if key = "Enter" then
gotoIdentityProvider ()
let defaultUser =
if isNullOrUndefined localStorage["user_id"] then
""
else
localStorage["user_id"]
// Browser.Dom.document.cookie
// |> fun s -> s.Split ';'
// |> Array.filter (fun s -> s.StartsWith "user_id=")
// |> Array.tryHead
// |> Option.map (fun s -> s.Split '=' |> Array.last)
// |> Option.defaultValue ""
let toggleAmnesia _ = setAmnesia (not amnesia)
html $"""
<div class="centering">
<div @keydown={Ev(onEnter)}>
<sl-card class="card-overview" >
<div style="padding: 10px; width: 300px; height: 300px">
<img
slot="image"
src="/dex/static/img/ob.png"
width="290px"
alt="Oceanbox login"
/>
</div>
<sl-input placeholder="Username or email" label="User" value="{defaultUser}" clearable @sl-input={EvVal(setUid)}></sl-input>
<div style="width: 150px; height: 50px; padding-top: 10px;">
<sl-checkbox ?checked={not amnesia} @sl-input={Ev(toggleAmnesia)}>Remember me</sl-checkbox>
</div>
<div style="width: 150px; height: 50px;">
<sl-button variant="primary" pill @click={Ev(gotoIdentityProvider)}>Next</sl-button>
</div>
</sl-card>
</div>
</div>
<style>
.card-overview {{
max-width: 400px;
}}
.card-overview small {{
color: var(--sl-color-neutral-500);
}}
.card-overview [slot='footer'] {{
display: flex;
justify-content: space-between;
align-items: center;
}}
.centering {{
height: 50%%;
display: flex;
align-items: center;
justify-content: center;
}}
.centering div {{
width: 100px;
height: 100px;
}}
</style>
"""
@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Fable.Lit" Version="1.4.1" />
<PackageReference Include="Thoth.Json" Version="6.0.0" />
</ItemGroup>
</Project>
+2
View File
@@ -20,5 +20,7 @@ spec:
value: true value: true
- name: contentType - name: contentType
value: "application/json" value: "application/json"
- name: route
value: /slurm-events
scopes: scopes:
- prod-hipster - prod-hipster
+2
View File
@@ -20,5 +20,7 @@ spec:
value: true value: true
- name: contentType - name: contentType
value: "application/json" value: "application/json"
- name: route
value: /slurm-events
scopes: scopes:
- staging-hipster - staging-hipster
+42
View File
@@ -0,0 +1,42 @@
apiVersion: batch/v1
kind: Job
metadata:
name: staging-openfga-migrate
labels:
helm.sh/chart: openfga-0.2.12
app.kubernetes.io/name: openfga
app.kubernetes.io/instance: staging
app.kubernetes.io/version: "v1.5.9"
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: post-install, post-upgrade, post-rollback, post-delete
helm.sh/hook-delete-policy: before-hook-creation
helm.sh/hook-weight: "-5"
spec:
template:
metadata:
annotations:
helm.sh/hook: post-install, post-upgrade, post-rollback, post-delete
helm.sh/hook-delete-policy: before-hook-creation
helm.sh/hook-weight: "-5"
spec:
serviceAccountName: staging-openfga
containers:
- name: migrate-database
securityContext:
{}
image: "openfga/openfga:v1.5.9"
args: ["migrate"]
env:
- name: OPENFGA_DATASTORE_ENGINE
value: "postgres"
- name: OPENFGA_DATASTORE_URI
valueFrom:
secretKeyRef:
name: "staging-openfga-postgresql"
key: "uri"
resources:
{}
restartPolicy: Never
backoffLimit: 1
+20
View File
@@ -0,0 +1,20 @@
apiVersion: v1
stringData:
postgres-password: tidings-guise-sternness-yummy
uri: postgres://postgres:tidings-guise-sternness-yummy@staging-openfga-postgresql.idp.svc.cluster.local:5432/postgres?sslmode=disable
kind: Secret
metadata:
name: staging-openfga-postgresql
namespace: idp
type: Opaque
---
apiVersion: v1
stringData:
postgres-password: unaltered-astute-raven-sitter
uri: postgres://postgres:unaltered-astute-raven-sitter@prod-openfga-postgresql.idp.svc.cluster.local:5432/postgres?sslmode=disable
kind: Secret
metadata:
name: prod-openfga-postgresql
namespace: idp
type: Opaque
+42
View File
@@ -46,6 +46,48 @@
} }
] ]
}, },
{
"domain": "leroyseafood.com",
"access": [
{
"matching": ".*@leroyseafood.com",
"group": "/leroy",
"roles": [ "user" ],
"capabilities": [
"run:transport",
"run:sedimentation"
]
}
]
},
{
"domain": "leroyaurora.no",
"access": [
{
"matching": ".*@leroyaurora.no",
"group": "/leroy",
"roles": [ "user" ],
"capabilities": [
"run:transport",
"run:sedimentation"
]
}
]
},
{
"domain": "leroymidt.no",
"access": [
{
"matching": ".*@leroymidt.no",
"group": "/leroy",
"roles": [ "user" ],
"capabilities": [
"run:transport",
"run:sedimentation"
]
}
]
},
{ {
"domain": "serit.no", "domain": "serit.no",
"access": [ "access": [