Compare commits
7 Commits
WEBDEV-0.1
...
445b33f852
| Author | SHA1 | Date | |
|---|---|---|---|
| 445b33f852 | |||
| 433a8d78a4 | |||
| fd2246391c | |||
| 95ddb3236c | |||
| f1144d2cb9 | |||
| 0ca2a0e38c | |||
| 9b590bb4fa |
1
.gitignore
vendored
1
.gitignore
vendored
@ -248,4 +248,5 @@ yarn-debug.log*
|
|||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
.env
|
.env
|
||||||
Logs/*
|
Logs/*
|
||||||
|
docker-compose.yml
|
||||||
*exclude*
|
*exclude*
|
||||||
6
.woodpecker.yaml
Normal file
6
.woodpecker.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
steps:
|
||||||
|
- name: BuildAPI
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:6.0
|
||||||
|
commands:
|
||||||
|
- dotnet build ./API
|
||||||
|
- dotnet test ./API
|
||||||
@ -1,12 +0,0 @@
|
|||||||
when:
|
|
||||||
- event: [push, pull_request, tag]
|
|
||||||
ref: [refs/tags/APIDEV-*, refs/tags/API-*, refs/heads/api/*]
|
|
||||||
steps:
|
|
||||||
- name: (YABA.API) Build and run tests
|
|
||||||
when:
|
|
||||||
- event: [push, pull_request, tag]
|
|
||||||
branch: [api/*]
|
|
||||||
image: mcr.microsoft.com/dotnet/sdk:6.0
|
|
||||||
commands:
|
|
||||||
- dotnet build ./API
|
|
||||||
- dotnet test ./API
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
when:
|
|
||||||
- event: tag
|
|
||||||
ref: [refs/tags/APIDEV-*, refs/tags/API-*]
|
|
||||||
steps:
|
|
||||||
- name: (YABA.API) Determining Docker image version number (dev)
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/APIDEV-*
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- rm -f tags.txt
|
|
||||||
- echo ${CI_COMMIT_TAG} | sed -e "s/^APIDEV-//" >> tags.txt
|
|
||||||
- echo "latest-dev" >> tags.txt
|
|
||||||
- name: (YABA.API) Determining Docker image version number (prod)
|
|
||||||
image: alpine:latest
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/API-*
|
|
||||||
commands:
|
|
||||||
- rm -f tags.txt
|
|
||||||
- echo ${CI_COMMIT_TAG} | sed -e "s/^API-//" >> tags.txt
|
|
||||||
- echo "latest" >> tags.txt
|
|
||||||
- name: (YABA.API) Package and Upload Docker Image
|
|
||||||
image: woodpeckerci/plugin-docker-buildx
|
|
||||||
settings:
|
|
||||||
repo: gitea.iwanaga.moe/cjtibule/yaba/api
|
|
||||||
context: ./API
|
|
||||||
dockerfile: ./API/YABA.API/Dockerfile
|
|
||||||
tags_file: tags.txt
|
|
||||||
username:
|
|
||||||
from_secret: gitea_yaba_registry_username
|
|
||||||
password:
|
|
||||||
from_secret: gitea_yaba_registry_password
|
|
||||||
registry: gitea.iwanaga.moe
|
|
||||||
depends_on:
|
|
||||||
- api_build
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
when:
|
|
||||||
- event: tag
|
|
||||||
ref: [refs/tags/WEBDEV-*, refs/tags/WEB-*]
|
|
||||||
steps:
|
|
||||||
- name: (YABA.Web) Determining Docker image version number (dev)
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/WEBDEV-*
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- rm -f tags.txt
|
|
||||||
- echo ${CI_COMMIT_TAG} | sed -e "s/^WEBDEV-//" >> tags.txt
|
|
||||||
- echo "latest-dev" >> tags.txt
|
|
||||||
- name: (YABA.Web) Determining Docker image version number (prod)
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/WEB-*
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- rm -f tags.txt
|
|
||||||
- echo ${CI_COMMIT_TAG} | sed -e "s/^WEB-//" >> tags.txt
|
|
||||||
- echo "latest" >> tags.txt
|
|
||||||
- name: (YABA.Web) Package and Upload Docker Image (dev)
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/WEBDEV-*
|
|
||||||
image: woodpeckerci/plugin-docker-buildx
|
|
||||||
settings:
|
|
||||||
repo: gitea.iwanaga.moe/cjtibule/yaba/web
|
|
||||||
context: ./Web
|
|
||||||
dockerfile: ./Web/Dockerfile
|
|
||||||
tags_file: tags.txt
|
|
||||||
username:
|
|
||||||
from_secret: gitea_yaba_registry_username
|
|
||||||
password:
|
|
||||||
from_secret: gitea_yaba_registry_password
|
|
||||||
registry: gitea.iwanaga.moe
|
|
||||||
build_args:
|
|
||||||
from_secret: DEV1_BUILDARGS
|
|
||||||
- name: (YABA.Web) Package and Upload Docker Image (prod)
|
|
||||||
when:
|
|
||||||
- ref: refs/tags/WEB-*
|
|
||||||
image: woodpeckerci/plugin-docker-buildx
|
|
||||||
settings:
|
|
||||||
repo: gitea.iwanaga.moe/cjtibule/yaba/web
|
|
||||||
context: ./Web
|
|
||||||
dockerfile: ./Web/Dockerfile
|
|
||||||
tags_file: tags.txt
|
|
||||||
username:
|
|
||||||
from_secret: gitea_yaba_registry_username
|
|
||||||
password:
|
|
||||||
from_secret: gitea_yaba_registry_password
|
|
||||||
registry: gitea.iwanaga.moe
|
|
||||||
build_args:
|
|
||||||
from_secret: PROD_BUILDARGS
|
|
||||||
@ -6,16 +6,14 @@ EXPOSE 80
|
|||||||
EXPOSE 443
|
EXPOSE 443
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV ASPNETCORE_Environment=
|
ENV ASPNETCORE_Environment=Development
|
||||||
ENV ASPNETCORE_Authentication__Auth0__ClientId=
|
ENV ASPNETCORE_Authentication__Auth0__ClientId=
|
||||||
ENV ASPNETCORE_Authentication__Auth0__ClientSecret=
|
ENV ASPNETCORE_Authentication__Auth0__ClientSecret=
|
||||||
ENV ASPNETCORE_Authentication__Auth0__Domain=
|
ENV ASPNETCORE_Authentication__Auth0__Domain=
|
||||||
ENV ASPNETCORE_Authentication__Auth0__Identifier=
|
ENV ASPNETCORE_Authentication__Auth0__Identifier=
|
||||||
ENV ASPNETCORE_ConnectionStrings__YABAReadOnlyDbConnectionString=
|
ENV ASPNETCORE_ConnectionStrings__YABAReadOnlyDbConnectionString=
|
||||||
ENV ASPNETCORE_ConnectionStrings__YABAReadWriteDbConnectionString=
|
ENV ASPNETCORE_ConnectionStrings__YABAReadWriteDbConnectionString=
|
||||||
ENV WebClient__Url=
|
ENV ASPNETCORE_WebClient__Url=
|
||||||
ENV Serilog__WriteTo__1__Args__Uri=
|
|
||||||
ENV Serilog__WriteTo__1__Args__Labels__1__Value=
|
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
|
FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
using YABA.API.Extensions;
|
using YABA.API.Extensions;
|
||||||
using YABA.Common.Extensions;
|
using YABA.Common.Extensions;
|
||||||
using YABA.Common.Lookups;
|
using YABA.Common.Lookups;
|
||||||
using YABA.Common.Utils;
|
|
||||||
using YABA.Service.Interfaces;
|
using YABA.Service.Interfaces;
|
||||||
|
|
||||||
namespace YABA.API.Middlewares
|
namespace YABA.API.Middlewares
|
||||||
@ -32,7 +31,7 @@ namespace YABA.API.Middlewares
|
|||||||
userId = registedUser.Id;
|
userId = registedUser.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
httpContext.User.Identities.FirstOrDefault().AddClaim(new Claim(ClaimsLookup.UserId.GetClaimName(EnvironmentUtils.IsDevelopmentEnvironment()), userId.ToString()));
|
httpContext.User.Identities.FirstOrDefault().AddClaim(new Claim(ClaimsLookup.UserId.GetClaimName(), userId.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,13 +4,11 @@ namespace YABA.Common.Attributes
|
|||||||
{
|
{
|
||||||
public class ClaimNameAttribute : Attribute
|
public class ClaimNameAttribute : Attribute
|
||||||
{
|
{
|
||||||
public string DevClaimName { get; private set; }
|
public string Name { get; private set; }
|
||||||
public string ProdClaimName { get; private set; }
|
|
||||||
|
|
||||||
public ClaimNameAttribute(string devClaimName, string prodClaimName)
|
public ClaimNameAttribute(string name)
|
||||||
{
|
{
|
||||||
this.DevClaimName = devClaimName;
|
this.Name = name;
|
||||||
ProdClaimName = prodClaimName;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,9 +28,9 @@ namespace YABA.Common.Extensions
|
|||||||
return enumValue.GetAttribute<DisplayAttribute>().Name;
|
return enumValue.GetAttribute<DisplayAttribute>().Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetClaimName(this ClaimsLookup claimLookup, bool isDevelopmentEnvironment)
|
public static string GetClaimName(this ClaimsLookup claimLookup)
|
||||||
{
|
{
|
||||||
return isDevelopmentEnvironment ? claimLookup.GetAttribute<ClaimNameAttribute>().DevClaimName : claimLookup.GetAttribute<ClaimNameAttribute>().ProdClaimName;
|
return claimLookup.GetAttribute<ClaimNameAttribute>().Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsCrudResultSuccessful(this CrudResultLookup importStatusLookup) => SuccessfulCrudStatuses.Contains(importStatusLookup);
|
public static bool IsCrudResultSuccessful(this CrudResultLookup importStatusLookup) => SuccessfulCrudStatuses.Contains(importStatusLookup);
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
using System;
|
using System.Security.Claims;
|
||||||
using System.Security.Claims;
|
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
using YABA.Common.Lookups;
|
using YABA.Common.Lookups;
|
||||||
using YABA.Common.Utils;
|
|
||||||
|
|
||||||
namespace YABA.Common.Extensions
|
namespace YABA.Common.Extensions
|
||||||
{
|
{
|
||||||
@ -14,7 +12,7 @@ namespace YABA.Common.Extensions
|
|||||||
public static string GetCustomClaim(this IIdentity identity, ClaimsLookup claim)
|
public static string GetCustomClaim(this IIdentity identity, ClaimsLookup claim)
|
||||||
{
|
{
|
||||||
var claimsIdentity = identity as ClaimsIdentity;
|
var claimsIdentity = identity as ClaimsIdentity;
|
||||||
return claimsIdentity.FindFirst(claim.GetClaimName(EnvironmentUtils.IsDevelopmentEnvironment()))?.Value.ToString();
|
return claimsIdentity.FindFirst(claim.GetClaimName())?.Value.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,19 +4,19 @@ namespace YABA.Common.Lookups
|
|||||||
{
|
{
|
||||||
public enum ClaimsLookup
|
public enum ClaimsLookup
|
||||||
{
|
{
|
||||||
[ClaimName("https://auth.dev.iwanaga.moe/api/auth_provider_id", "https://auth.iwanaga.moe/api/auth_provider_id")]
|
[ClaimNameAttribute("https://dev.iwanaga.moe/api/auth_provider_id")]
|
||||||
AuthProviderId = 1,
|
AuthProviderId = 1,
|
||||||
|
|
||||||
[ClaimName("https://auth.dev.iwanaga.moe/api/email_address", "https://auth.iwanaga.moe/api/email_address")]
|
[ClaimNameAttribute("https://dev.iwanaga.moe/api/email_address")]
|
||||||
UserEmail = 2,
|
UserEmail = 2,
|
||||||
|
|
||||||
[ClaimName("https://auth.dev.iwanaga.moe/api/email_verified", "https://auth.iwanaga.moe/api/email_verified")]
|
[ClaimNameAttribute("https://dev.iwanaga.moe/api/email_verified")]
|
||||||
IsEmailConfirmed = 3,
|
IsEmailConfirmed = 3,
|
||||||
|
|
||||||
[ClaimName("https://auth.dev.iwanaga.moe/api/username", "https://auth.iwanaga.moe/api/username")]
|
[ClaimNameAttribute("https://dev.iwanaga.moe/api/username")]
|
||||||
Username = 4,
|
Username = 4,
|
||||||
|
|
||||||
[ClaimName("https://auth.dev.iwanaga.moe/api/id", "https://auth.iwanaga.moe/api/id")]
|
[ClaimNameAttribute("https://dev.iwanaga.moe/api/id")]
|
||||||
UserId = 5
|
UserId = 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace YABA.Common.Utils
|
|
||||||
{
|
|
||||||
public static class EnvironmentUtils
|
|
||||||
{
|
|
||||||
public static bool IsDevelopmentEnvironment() => Environment.GetEnvironmentVariable("ASPNETCORE_Environment") == "Development";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
index index.html;
|
index index.html;
|
||||||
location / {
|
location / {
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
"name": "yaba-web",
|
"name": "yaba-web",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"homepage": ".",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@auth0/auth0-react": "^2.0.0",
|
"@auth0/auth0-react": "^2.0.0",
|
||||||
"@testing-library/jest-dom": "^5.16.5",
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
|
|||||||
@ -1,38 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
services:
|
|
||||||
web:
|
|
||||||
build:
|
|
||||||
context: ./Web
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
args:
|
|
||||||
REACT_APP_API_BASE_URL: http://localhost:32270/api
|
|
||||||
REACT_APP_AUTH0_DOMAIN: iwanaga-dev.us.auth0.com
|
|
||||||
REACT_APP_AUTH0_CLIENT_ID: ${AUTH0_CLIENT_ID}
|
|
||||||
REACT_APP_AUTH0_CALLBACK_URL: http://localhost:32271/redirect
|
|
||||||
REACT_APP_AUTH0_AUDIENCE: https://yaba.dev.iwanaga.moe
|
|
||||||
container_name: yaba_web
|
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- 32271:80
|
|
||||||
depends_on:
|
|
||||||
- api
|
|
||||||
api:
|
|
||||||
build:
|
|
||||||
context: ./API
|
|
||||||
dockerfile: YABA.API/Dockerfile
|
|
||||||
args:
|
|
||||||
MODE: Debug
|
|
||||||
container_name: yaba_api
|
|
||||||
ports:
|
|
||||||
- 32270:80
|
|
||||||
environment:
|
|
||||||
ASPNETCORE_Environment: Development
|
|
||||||
ASPNETCORE_Authentication__Auth0__ClientId: ${AUTH0_CLIENT_ID}
|
|
||||||
ASPNETCORE_Authentication__Auth0__ClientSecret: ${AUTH0_CLIENT_SECRET}
|
|
||||||
ASPNETCORE_Authentication__Auth0__Domain: iwanaga-dev.us.auth0.com
|
|
||||||
ASPNETCORE_Authentication__Auth0__Identifier: https://yaba.dev.iwanaga.moe
|
|
||||||
ASPNETCORE_ConnectionStrings__YABAReadOnlyDbConnectionString: ${RO_CONNECTION_STRING}
|
|
||||||
ASPNETCORE_ConnectionStrings__YABAReadWriteDbConnectionString: ${RW_CONNECTION_STRING}
|
|
||||||
WebClient__Url: http://localhost:32271
|
|
||||||
Serilog__WriteTo__1__Args__Uri: https://loki.iwanaga.moe
|
|
||||||
Serilog__WriteTo__1__Args__Labels__1__Value: localhost
|
|
||||||
Reference in New Issue
Block a user