diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b48e702..1d5a2f0 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -45,12 +45,30 @@ Please ask as many questions as you need, either directly in the issue or on [Di 1. Fork the [authorizer](https://github.com/authorizerdev/authorizer) repository (**Skip this step if you have access to repo**) 2. Clone repo: `git clone https://github.com/authorizerdev/authorizer.git` or use the forked url from step 1 3. Change directory to authorizer: `cd authorizer` -5. Create Env file `cp .env.sample .env`. Check all the supported env [here](https://docs.authorizer.dev/core/env/) -6. Build Dashboard `make build-dashboard` -7. Build App `make build-app` -8. Build Server `make clean && make` +4. Create Env file `cp .env.sample .env`. Check all the supported env [here](https://docs.authorizer.dev/core/env/) +5. Build Dashboard `make build-dashboard` +6. Build App `make build-app` +7. Build Server `make clean && make` > Note: if you don't have [`make`](https://www.ibm.com/docs/en/aix/7.2?topic=concepts-make-command), you can `cd` into `server` dir and build using the `go build` command. In that case you will have to build `dashboard` & `app` manually using `npm run build` on both dirs. -9. Run binary `./build/server` +8. Run binary `./build/server` + +### Updating GraphQL schema + +- Modify `server/graph/schema.graphqls` file +- Run `make generate-graphql` this will update the models and required methods +- If a new mutation or query is added + - Write the implementation for the new resolver in `server/resolvers/NEW_RESOLVER.GO` + - Update `server/graph/schema.resolvers.go` with the new resolver method + +### Adding support for new database + +- Run `make generate-db-template dbname=NEW_DB_NAME` + eg `make generate-db-template dbname=dynamodb` + +This command will generate a folder in server/db/providers/ with name specified in the above command. +One will have to implement methods present in that folder. + +> Note: Connection for database and schema changes are written in `server/db/providers/DB_NAME/provider.go` > `NewProvider` method is called for any given db based on the env variables present. ### Testing @@ -87,145 +105,145 @@ For manually testing using graphql playground, you can paste following queries a ```gql mutation Signup { - signup( - params: { - email: "lakhan@yopmail.com" - password: "test" - confirm_password: "test" - given_name: "lakhan" - } - ) { - message - user { - id - family_name - given_name - email - email_verified - } - } + signup( + params: { + email: "lakhan@yopmail.com" + password: "test" + confirm_password: "test" + given_name: "lakhan" + } + ) { + message + user { + id + family_name + given_name + email + email_verified + } + } } mutation ResendEamil { - resend_verify_email( - params: { email: "lakhan@yopmail.com", identifier: "basic_auth_signup" } - ) { - message - } + resend_verify_email( + params: { email: "lakhan@yopmail.com", identifier: "basic_auth_signup" } + ) { + message + } } query GetVerifyRequests { - _verification_requests { - id - token - expires - identifier - } + _verification_requests { + id + token + expires + identifier + } } mutation VerifyEmail { - verify_email(params: { token: "" }) { - access_token - expires_at - user { - id - email - given_name - email_verified - } - } + verify_email(params: { token: "" }) { + access_token + expires_at + user { + id + email + given_name + email_verified + } + } } mutation Login { - login(params: { email: "lakhan@yopmail.com", password: "test" }) { - access_token - expires_at - user { - id - family_name - given_name - email - } - } + login(params: { email: "lakhan@yopmail.com", password: "test" }) { + access_token + expires_at + user { + id + family_name + given_name + email + } + } } query GetSession { - session { - access_token - expires_at - user { - id - given_name - family_name - email - email_verified - signup_methods - created_at - updated_at - } - } + session { + access_token + expires_at + user { + id + given_name + family_name + email + email_verified + signup_methods + created_at + updated_at + } + } } mutation ForgotPassword { - forgot_password(params: { email: "lakhan@yopmail.com" }) { - message - } + forgot_password(params: { email: "lakhan@yopmail.com" }) { + message + } } mutation ResetPassword { - reset_password( - params: { token: "", password: "test", confirm_password: "test" } - ) { - message - } + reset_password( + params: { token: "", password: "test", confirm_password: "test" } + ) { + message + } } mutation UpdateProfile { - update_profile(params: { family_name: "samani" }) { - message - } + update_profile(params: { family_name: "samani" }) { + message + } } query GetUsers { - _users { - id - email - email_verified - given_name - family_name - picture - signup_methods - phone_number - } + _users { + id + email + email_verified + given_name + family_name + picture + signup_methods + phone_number + } } mutation MagicLinkLogin { - magic_link_login(params: { email: "test@yopmail.com" }) { - message - } + magic_link_login(params: { email: "test@yopmail.com" }) { + message + } } mutation Logout { - logout { - message - } + logout { + message + } } mutation UpdateUser { - _update_user( - params: { - id: "dafc9400-d603-4ade-997c-83fcd54bbd67" - roles: ["user", "admin"] - } - ) { - email - roles - } + _update_user( + params: { + id: "dafc9400-d603-4ade-997c-83fcd54bbd67" + roles: ["user", "admin"] + } + ) { + email + roles + } } mutation DeleteUser { - _delete_user(params: { email: "signup.test134523@yopmail.com" }) { - message - } + _delete_user(params: { email: "signup.test134523@yopmail.com" }) { + message + } } ```