-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: refactor ui and publish examples
- Loading branch information
1 parent
89c5269
commit 7dbe4cb
Showing
13 changed files
with
223 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
name: Publish | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
env: | ||
OIDC_ISSUER: "https://testid.cerberauth.com" | ||
|
||
jobs: | ||
deploy-nodejs-cloudflare: | ||
runs-on: ubuntu-latest | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
working-directory: ${{ matrix.workingDirectory }} | ||
|
||
strategy: | ||
matrix: | ||
include: | ||
- workingDirectory: ./examples/react-spa | ||
projectName: cerberauth-react-spa-oidc | ||
directory: ./dist | ||
- workingDirectory: ./examples/angular-spa | ||
projectName: cerberauth-angular-spa-oidc | ||
directory: ./dist/angular-spa/browser | ||
|
||
permissions: | ||
contents: read | ||
deployments: write | ||
|
||
steps: | ||
- name: Checkout 🛎 | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup node env 🏗 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version-file: '.nvmrc' | ||
cache: 'npm' | ||
cache-dependency-path: '${{ matrix.workingDirectory }}/package-lock.json' | ||
|
||
- name: Install dependencies 👨🏻💻 | ||
run: npm ci | ||
|
||
- name: Run build | ||
run: npm run build | ||
|
||
- name: Publish | ||
uses: cloudflare/pages-action@1 | ||
with: | ||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | ||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | ||
projectName: ${{ matrix.projectName }} | ||
directory: ${{ matrix.workingDirectory }}/${{ matrix.directory }} | ||
gitHubToken: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,76 @@ | ||
# AngularSpa | ||
# Angular SPA (Single Page App) using Authorization Code Flow with PKCE | ||
|
||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.0.3. | ||
This project demonstrates how to implement the Authorization Code Flow with PKCE for an Angular SPA. | ||
|
||
## Development server | ||
Disclaimer: This project is for educational purposes only and should not be used in production without proper security review and testing. | ||
|
||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. | ||
## Deployment | ||
|
||
## Code scaffolding | ||
This project is deployed on Cloudflare Pages. You can access the live demo [here](https://cerberauth-angular-spa-oidc.pages.dev/). | ||
|
||
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. | ||
## Prerequisites | ||
|
||
## Build | ||
Before getting started, make sure you have the following: | ||
|
||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. | ||
- Node.js installed on your machine | ||
- An OpenID Connect provider that supports the Authorization Code Flow with PKCE | ||
|
||
## Running unit tests | ||
## Getting Started | ||
|
||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). | ||
1. Clone the repository: | ||
|
||
## Running end-to-end tests | ||
```bash | ||
git clone https://github.com/cerberauth/openid-connect-examples.git | ||
``` | ||
|
||
Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. | ||
2. Install the dependencies: | ||
|
||
## Further help | ||
```bash | ||
cd openid-connect-examples/angular-spa | ||
npm ci | ||
``` | ||
|
||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. | ||
3. Configure the OpenID Connect provider: | ||
|
||
If you don't have an OpenID Connect provider, you can use [TestID OpenID Connect Provider](https://testid.cerberauth.com/). | ||
|
||
- Obtain the client ID and client secret from your OpenID Connect provider. | ||
- Register the redirect URI for your React SPA in the provider's developer console. | ||
|
||
4. Update the configuration: | ||
|
||
- Update the `environment.ts` file in the `src/environments` directory. | ||
- Add the necessary environment variables to the `environment.ts` file. For example: | ||
|
||
```typescript | ||
export const environment = { | ||
production: false, | ||
clientId: 'your-client-id', | ||
redirectUri: 'http://localhost:4200/callback', | ||
issuer: 'https://testid.cerberauth.com', | ||
scopes: 'openid profile email', | ||
}; | ||
``` | ||
|
||
Replace `your-client-id`, `http://localhost:4200/callback`, and `https://testid.cerberauth.com` with the actual values provided by your OpenID Connect provider. | ||
|
||
5. Start the development server: | ||
|
||
```bash | ||
npm start | ||
``` | ||
|
||
6. Open your browser and navigate to `http://localhost:4200/`. | ||
|
||
7. Click on the "Login" button to initiate the authorization code flow. | ||
|
||
8. After successful authentication, you will be redirected back to the React SPA and the user information will be displayed. | ||
|
||
## Additional Resources | ||
|
||
- [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | ||
- [OpenID Connect](https://openid.net/) | ||
- [OAuth 2.0 Authorization Code Flow](https://oauth.net/2/grant-types/authorization-code/) | ||
- [PKCE](https://oauth.net/2/pkce/) | ||
- [Awesome OpenID Connect](https://github.com/cerberauth/awesome-openid-connect) | ||
- [Angular](https://angular.io/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
VITE_OIDC_ISSUER="" | ||
VITE_OIDC_CLIENT_ID="" | ||
VITE_OIDC_ISSUER="https://testid.cerberauth.com" | ||
VITE_OIDC_CLIENT_ID="c6c0c0ec-09e0-448e-a856-3e596c3bdd9d" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> { | ||
children: React.ReactNode | ||
} | ||
|
||
export const Button: React.FC<ButtonProps> = ({ children, ...props }) => { | ||
return ( | ||
<button | ||
className="inline-flex justify-center rounded-lg text-sm font-semibold py-3 px-4 bg-slate-900 text-white hover:bg-slate-700" | ||
{...props} | ||
> | ||
{children} | ||
</button> | ||
) | ||
} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.