Compare commits

..

9 Commits

Author SHA1 Message Date
ac35982153 feat: Add args for project id
All checks were successful
Publish Docker / build (push) Successful in 9m42s
2025-02-14 14:19:30 +11:00
52390de4c5 fix: Some syntax issues
All checks were successful
Publish Docker / build (push) Successful in 3m22s
2025-02-14 14:03:03 +11:00
e01c16e166 fix: Add email as an allowed scope
Some checks failed
Publish Docker / build (push) Has been cancelled
2025-02-14 14:02:08 +11:00
08bb610bbb fix: Typo in docker image name
All checks were successful
Publish Docker / build (push) Successful in 3m35s
2025-02-14 13:51:34 +11:00
9b6afa1d01 feat: Add email claim
Some checks failed
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 5s
ci / build (wasm32-unknown-unknown) (push) Failing after 12s
Publish Docker / build (push) Failing after 3m44s
2025-02-14 13:46:58 +11:00
2bba56e811 fix: Install some more stuff
Some checks failed
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 5s
ci / build (wasm32-unknown-unknown) (push) Failing after 12s
Publish Docker / build (push) Failing after 8m57s
2025-02-14 13:21:19 +11:00
27d2038b33 fix: Add -y for install
Some checks failed
ci / build (wasm32-unknown-unknown) (push) Failing after 5s
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 11s
Publish Docker / build (push) Failing after 4m48s
2025-02-14 13:14:18 +11:00
82cc5202dd fix: Try to manually install docker
Some checks failed
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 5s
ci / build (wasm32-unknown-unknown) (push) Failing after 11s
Publish Docker / build (push) Failing after 18s
2025-02-14 13:13:39 +11:00
f6d6137edf fix: Update to newest version of docker actions
Some checks failed
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 20s
Publish Docker / build (push) Failing after 20s
ci / build (wasm32-unknown-unknown) (push) Failing after 32s
2025-02-14 13:05:53 +11:00
4 changed files with 19 additions and 54 deletions

View File

@@ -1,41 +0,0 @@
name: ci
on: push
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Dwarnings"
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- cargo_target: "x86_64-unknown-linux-gnu"
- cargo_target: "wasm32-unknown-unknown"
steps:
- name: Clone repo
uses: actions/checkout@v3
- name: Add targets
run: rustup target add wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: Docker Compose
run: docker-compose -f test/docker-compose.yml up -d redis
- name: Build
env:
CARGO_BUILD_TARGET: ${{ matrix.cargo_target }}
run: cargo build
- name: Clippy
env:
CARGO_BUILD_TARGET: ${{ matrix.cargo_target }}
run: cargo clippy
- name: Fmt
env:
CARGO_BUILD_TARGET: ${{ matrix.cargo_target }}
run: cargo fmt -- --check
- name: Test
if: matrix.cargo_target == 'x86_64-unknown-linux-gnu'
run: cargo test

View File

@@ -11,13 +11,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install Docker
run: |
apt-get update
apt-get install curl -y
curl -fsSL https://get.docker.com | sh
- name: Install building tools
run: |
apt-get install build-essential python3 python3-pip -y
- name: Build and push image
uses: elgohr/Publish-Docker-Github-Action@v4
uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: nathanwoodburnwoodburn/eth-oidc
name: nathanwoodburn/eth-oidc
username: nathanwoodburn
password: ${{ secrets.DOCKERGIT_TOKEN }}
registry: git.woodburn.au
tag_names: true
tag_semver: true
snapshot: true
buildargs: PROJECT_ID=${{ secrets.PROJECT_ID }}

View File

@@ -14,7 +14,8 @@ COPY --from=dep_planner /siwe-oidc/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
FROM node:16-alpine as node_builder
ENV PROJECT_ID=""
ARG PROJECT_ID
ENV PROJECT_ID=${PROJECT_ID}
ADD --chown=node:node ./static /siwe-oidc/static
ADD --chown=node:node ./js/ui /siwe-oidc/js/ui
WORKDIR /siwe-oidc/js/ui

View File

@@ -14,14 +14,7 @@ use openidconnect::{
CoreJwsSigningAlgorithm, CoreProviderMetadata, CoreRegisterErrorResponseType,
CoreResponseType, CoreRsaPrivateSigningKey, CoreSubjectIdentifierType, CoreTokenResponse,
CoreTokenType, CoreUserInfoClaims, CoreUserInfoJsonWebToken,
},
registration::{EmptyAdditionalClientMetadata, EmptyAdditionalClientRegistrationResponse},
url::Url,
AccessToken, Audience, AuthUrl, ClientConfigUrl, ClientId, ClientSecret, EmptyAdditionalClaims,
EmptyAdditionalProviderMetadata, EmptyExtraTokenFields, EndUserPictureUrl, EndUserUsername,
IssuerUrl, JsonWebKeyId, JsonWebKeySetUrl, LocalizedClaim, Nonce, OpPolicyUrl, OpTosUrl,
PrivateSigningKey, RedirectUrl, RegistrationAccessToken, RegistrationUrl, RequestUrl,
ResponseTypes, Scope, StandardClaims, SubjectIdentifier, TokenUrl, UserInfoUrl,
}, registration::{EmptyAdditionalClientMetadata, EmptyAdditionalClientRegistrationResponse}, url::Url, AccessToken, Audience, AuthUrl, ClientConfigUrl, ClientId, ClientSecret, EmptyAdditionalClaims, EmptyAdditionalProviderMetadata, EmptyExtraTokenFields, EndUserEmail, EndUserPictureUrl, EndUserUsername, IssuerUrl, JsonWebKeyId, JsonWebKeySetUrl, LocalizedClaim, Nonce, OpPolicyUrl, OpTosUrl, PrivateSigningKey, RedirectUrl, RegistrationAccessToken, RegistrationUrl, RequestUrl, ResponseTypes, Scope, StandardClaims, SubjectIdentifier, TokenUrl, UserInfoUrl
};
use rand::{distributions::Alphanumeric, thread_rng, Rng};
use rsa::{
@@ -42,9 +35,10 @@ use super::db::*;
use siwe_oidc::db::*;
lazy_static::lazy_static! {
static ref SCOPES: [Scope; 2] = [
static ref SCOPES: [Scope; 3] = [
Scope::new("openid".to_string()),
Scope::new("profile".to_string()),
Scope::new("email".to_string()),
];
}
const SIGNING_ALG: [CoreJwsSigningAlgorithm; 1] = [CoreJwsSigningAlgorithm::RsaSsaPkcs1V15Sha256];
@@ -239,7 +233,7 @@ async fn resolve_claims(
Ok(n) => resolve_avatar(eth_provider.clone(), &n).await,
Err(_) => None,
};
let email = format!("{}@{}", address, base_url.host_str().unwrap());
let email = format!("{}@eth.woodburn.au", address);
StandardClaims::new(subject_id)
.set_preferred_username(Some(EndUserUsername::new(username)))
.set_picture(avatar.map(|a| {
@@ -247,6 +241,7 @@ async fn resolve_claims(
avatar_localized.insert(None, EndUserPictureUrl::new(a.to_string()));
avatar_localized
}))
.set_email(Some(EndUserEmail::new(email)))
}
#[derive(Serialize, Deserialize)]