diff --git a/app/package-lock.json b/app/package-lock.json
index f903c7f..4f02a7b 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
- "@authorizerdev/authorizer-react": "0.9.0-beta.6",
+ "@authorizerdev/authorizer-react": "0.9.0-beta.7",
"@types/react": "^17.0.15",
"@types/react-dom": "^17.0.9",
"esbuild": "^0.12.17",
@@ -24,9 +24,9 @@
}
},
"node_modules/@authorizerdev/authorizer-js": {
- "version": "0.4.0-beta.0",
- "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-0.4.0-beta.0.tgz",
- "integrity": "sha512-wNh5ROldNqdbOXFPDlq1tObzPZyEQkbnOvSEwvnDfPYb9/BsJ3naj3/ayz4J2R5k2+Eyuk0LK64XYdkfIW0HYA==",
+ "version": "0.4.0-beta.3",
+ "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-0.4.0-beta.3.tgz",
+ "integrity": "sha512-OGZc6I6cnpi/WkSotkjVIc3LEzl8pFeiohr8+Db9xWd75/oTfOZqWRuIHTnTc1FC+6Sv2EjTJ9Aa6lrloWG+NQ==",
"dependencies": {
"node-fetch": "^2.6.1"
},
@@ -35,11 +35,11 @@
}
},
"node_modules/@authorizerdev/authorizer-react": {
- "version": "0.9.0-beta.6",
- "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.9.0-beta.6.tgz",
- "integrity": "sha512-5kGUUb0d/GQD24eoHeB/4WOloYeMT//Pdch8xmOKUetHk3t62rPtu1ADmitcfkhJUlM9St3fRZsaubPqdE9tvg==",
+ "version": "0.9.0-beta.7",
+ "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.9.0-beta.7.tgz",
+ "integrity": "sha512-hCGsVionKMZNk+uD0CLtMIkUzhQqpHbVntko3rY+O7ouOrTrikY/WQVPbo1bqX1cu/6/cHE4RVU3cZ7V5xnxVg==",
"dependencies": {
- "@authorizerdev/authorizer-js": "^0.4.0-beta.0",
+ "@authorizerdev/authorizer-js": "^0.4.0-beta.3",
"final-form": "^4.20.2",
"react-final-form": "^6.5.3",
"styled-components": "^5.3.0"
@@ -829,19 +829,19 @@
},
"dependencies": {
"@authorizerdev/authorizer-js": {
- "version": "0.4.0-beta.0",
- "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-0.4.0-beta.0.tgz",
- "integrity": "sha512-wNh5ROldNqdbOXFPDlq1tObzPZyEQkbnOvSEwvnDfPYb9/BsJ3naj3/ayz4J2R5k2+Eyuk0LK64XYdkfIW0HYA==",
+ "version": "0.4.0-beta.3",
+ "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-0.4.0-beta.3.tgz",
+ "integrity": "sha512-OGZc6I6cnpi/WkSotkjVIc3LEzl8pFeiohr8+Db9xWd75/oTfOZqWRuIHTnTc1FC+6Sv2EjTJ9Aa6lrloWG+NQ==",
"requires": {
"node-fetch": "^2.6.1"
}
},
"@authorizerdev/authorizer-react": {
- "version": "0.9.0-beta.6",
- "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.9.0-beta.6.tgz",
- "integrity": "sha512-5kGUUb0d/GQD24eoHeB/4WOloYeMT//Pdch8xmOKUetHk3t62rPtu1ADmitcfkhJUlM9St3fRZsaubPqdE9tvg==",
+ "version": "0.9.0-beta.7",
+ "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.9.0-beta.7.tgz",
+ "integrity": "sha512-hCGsVionKMZNk+uD0CLtMIkUzhQqpHbVntko3rY+O7ouOrTrikY/WQVPbo1bqX1cu/6/cHE4RVU3cZ7V5xnxVg==",
"requires": {
- "@authorizerdev/authorizer-js": "^0.4.0-beta.0",
+ "@authorizerdev/authorizer-js": "^0.4.0-beta.3",
"final-form": "^4.20.2",
"react-final-form": "^6.5.3",
"styled-components": "^5.3.0"
diff --git a/app/package.json b/app/package.json
index 2076745..951d93f 100644
--- a/app/package.json
+++ b/app/package.json
@@ -11,7 +11,7 @@
"author": "Lakhan Samani",
"license": "ISC",
"dependencies": {
- "@authorizerdev/authorizer-react": "0.9.0-beta.6",
+ "@authorizerdev/authorizer-react": "0.9.0-beta.7",
"@types/react": "^17.0.15",
"@types/react-dom": "^17.0.9",
"esbuild": "^0.12.17",
diff --git a/dashboard/src/components/Menu.tsx b/dashboard/src/components/Menu.tsx
index 342e2c2..a8e2fdd 100644
--- a/dashboard/src/components/Menu.tsx
+++ b/dashboard/src/components/Menu.tsx
@@ -29,10 +29,11 @@ import {
} from 'react-icons/fi';
import { IconType } from 'react-icons';
import { ReactText } from 'react';
-import { useMutation } from 'urql';
+import { useMutation, useQuery } from 'urql';
import { NavLink, useNavigate, useLocation } from 'react-router-dom';
import { useAuthContext } from '../contexts/AuthContext';
import { AdminLogout } from '../graphql/mutation';
+import { MetaQuery } from '../graphql/queries';
interface LinkItemProps {
name: string;
@@ -51,6 +52,7 @@ interface SidebarProps extends BoxProps {
export const Sidebar = ({ onClose, ...rest }: SidebarProps) => {
const { pathname } = useLocation();
+ const [{ fetching, data }] = useQuery({ query: MetaQuery });
return (
{
>
API Playground
+
+ {data?.meta?.version && (
+
+ Current Version: {data.meta.version}
+
+ )}
);
};
diff --git a/dashboard/src/graphql/queries/index.ts b/dashboard/src/graphql/queries/index.ts
index b4efc70..8528f3f 100644
--- a/dashboard/src/graphql/queries/index.ts
+++ b/dashboard/src/graphql/queries/index.ts
@@ -1,3 +1,12 @@
+export const MetaQuery = `
+ query MetaQuery {
+ meta {
+ version
+ client_id
+ }
+ }
+`;
+
export const AdminSessionQuery = `
query {
_admin_session{
diff --git a/dashboard/src/layouts/AuthLayout.tsx b/dashboard/src/layouts/AuthLayout.tsx
index f115b38..dbe51ff 100644
--- a/dashboard/src/layouts/AuthLayout.tsx
+++ b/dashboard/src/layouts/AuthLayout.tsx
@@ -1,8 +1,10 @@
-import { Box, Center, Flex, Image, Text } from '@chakra-ui/react';
+import { Box, Flex, Image, Text, Spinner } from '@chakra-ui/react';
import React from 'react';
-import { LOGO_URL } from '../constants';
+import { useQuery } from 'urql';
+import { MetaQuery } from '../graphql/queries';
export function AuthLayout({ children }: { children: React.ReactNode }) {
+ const [{ fetching, data }] = useQuery({ query: MetaQuery });
return (
-
- {children}
-
+ {fetching ? (
+
+ ) : (
+ <>
+
+ {children}
+
+
+ Current Version: {data.meta.version}
+
+ >
+ )}
);
}
diff --git a/dashboard/src/pages/Auth.tsx b/dashboard/src/pages/Auth.tsx
index be11ab8..2610dd1 100644
--- a/dashboard/src/pages/Auth.tsx
+++ b/dashboard/src/pages/Auth.tsx
@@ -6,7 +6,6 @@ import {
useToast,
VStack,
Text,
- Divider,
} from '@chakra-ui/react';
import React, { useEffect } from 'react';
import { useMutation } from 'urql';
diff --git a/server/graph/generated/generated.go b/server/graph/generated/generated.go
index 3327538..817dd79 100644
--- a/server/graph/generated/generated.go
+++ b/server/graph/generated/generated.go
@@ -1343,6 +1343,7 @@ input SignUpInput {
password: String!
confirm_password: String!
roles: [String!]
+ scope: [String!]
}
input LoginInput {
@@ -7298,6 +7299,14 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i
if err != nil {
return it, err
}
+ case "scope":
+ var err error
+
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope"))
+ it.Scope, err = ec.unmarshalOString2ᚕstringᚄ(ctx, v)
+ if err != nil {
+ return it, err
+ }
}
}
diff --git a/server/graph/model/models_gen.go b/server/graph/model/models_gen.go
index 9f4cdd9..ea069e5 100644
--- a/server/graph/model/models_gen.go
+++ b/server/graph/model/models_gen.go
@@ -153,6 +153,7 @@ type SignUpInput struct {
Password string `json:"password"`
ConfirmPassword string `json:"confirm_password"`
Roles []string `json:"roles"`
+ Scope []string `json:"scope"`
}
type UpdateEnvInput struct {
diff --git a/server/graph/schema.graphqls b/server/graph/schema.graphqls
index cf76429..18a727c 100644
--- a/server/graph/schema.graphqls
+++ b/server/graph/schema.graphqls
@@ -181,6 +181,7 @@ input SignUpInput {
password: String!
confirm_password: String!
roles: [String!]
+ scope: [String!]
}
input LoginInput {
diff --git a/server/graph/schema.resolvers.go b/server/graph/schema.resolvers.go
index 8830195..245d7d8 100644
--- a/server/graph/schema.resolvers.go
+++ b/server/graph/schema.resolvers.go
@@ -109,7 +109,5 @@ func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResol
// Query returns generated.QueryResolver implementation.
func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} }
-type (
- mutationResolver struct{ *Resolver }
- queryResolver struct{ *Resolver }
-)
+type mutationResolver struct{ *Resolver }
+type queryResolver struct{ *Resolver }
diff --git a/server/resolvers/signup.go b/server/resolvers/signup.go
index 2f15f15..308d284 100644
--- a/server/resolvers/signup.go
+++ b/server/resolvers/signup.go
@@ -151,6 +151,9 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR
}
} else {
scope := []string{"openid", "email", "profile"}
+ if params.Scope != nil && len(scope) > 0 {
+ scope = params.Scope
+ }
authToken, err := token.CreateAuthToken(gc, user, roles, scope)
if err != nil {