diff --git a/.adonisrc.json b/.adonisrc.json index 18d531a..6085ebb 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,8 +29,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer", - "@adonisjs/ally" + "@adonisjs/bouncer" ], "aceProviders": [ "@adonisjs/repl" diff --git a/.env.example b/.env.example index 48cc2e0..14e695b 100755 --- a/.env.example +++ b/.env.example @@ -32,12 +32,3 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= - -GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -TWITTER_CLIENT_ID= -TWITTER_CLIENT_SECRET= -DISCORD_CLIENT_ID= -DISCORD_CLIENT_SECRET= diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 840f669..786415d 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -42,132 +41,4 @@ export default class AuthController { user: user }) } - - public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter') - - if (twitter.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (twitter.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (twitter.hasError()) { - return response.status(500).send({ - message: twitter.getError() - }) - } - - const twitterUser = await twitter.user() - const user = await this.createUser(twitterUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async discord ({ ally, auth, response }: HttpContextContract) { - const discord = ally.use('discord') - - if (discord.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (discord.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (discord.hasError()) { - return response.status(500).send({ - message: discord.getError() - }) - } - - const discordUser = await discord.user() - const user = await this.createUser(discordUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github').stateless() - - if (github.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (github.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (github.hasError()) { - return response.status(500).send({ - message: github.getError() - }) - } - - const githubUser = await github.user() - const user = await this.createUser(githubUser) - const authUser: User = await auth.use('web').login(user, true) - return response.status(200).send({ - authUser: authUser, - user: user - }) - } - - public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google') - - if (google.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (google.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (google.hasError()) { - return response.status(500).send({ - message: google.getError() - }) - } - - const googleUser = await google.user() - const user = await this.createUser(googleUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async createUser (allyUser: AllyUserContract): Promise { - return await User.firstOrCreate({ - email: allyUser.email!, - }, { - email: allyUser.email!, - username: allyUser.name, - isConfirmed: allyUser.emailVerificationState === 'verified' - }) - } - } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts deleted file mode 100755 index b1780c2..0000000 --- a/app/Controllers/Http/GuestBookController.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import GuestValidator from "App/Validators/guestbook/GuestValidator"; -import GuestbookMessage from "App/Models/GuestbookMessage"; -import User from "App/Models/User"; - -export default class GuestBookController { - - public async index ({ response }: HttpContextContract) { - const guestbook_messages = await GuestbookMessage - .query() - .preload('user') - .orderBy('created_at', 'desc') - return response.status(200).send({ - guestbook_messages - }) - } - - public async store ({ request, response }: HttpContextContract) { - const data = await request.validate(GuestValidator) - let user = await User.findByOrFail('email', data.email) - const guestbook_message = user.related('guestbook_message').updateOrCreate({ - userId: user.id, - message: data.message - }, { - userId: user.id, - message: data.message - }) - return response.status(200).send({ - guestbook_message - }) - } - - public async show ({ params, response }: HttpContextContract) { - return response.status(200).send({ - guestbook_message: await GuestbookMessage.findOrFail(params.id) - }) - } - - public async destroy ({ params, response }: HttpContextContract) { - const guestbook_message = await GuestbookMessage.findOrFail(params.id) - await guestbook_message.delete() - return response.status(200).send({ - message: 'GuestBookMessage successfully deleted!' - }) - } - - public async exists ({ params, response }: HttpContextContract) { - const email = await params.email - const guestbook_message = await GuestbookMessage.findBy('email', email) - return response.status(200).send({ - signed: guestbook_message !== null - }) - } -} diff --git a/app/Models/GuestbookMessage.ts b/app/Models/GuestbookMessage.ts deleted file mode 100755 index ef4a596..0000000 --- a/app/Models/GuestbookMessage.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {DateTime} from 'luxon' -import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' -import User from "App/Models/User"; - -export default class GuestbookMessage extends BaseModel { - @column({isPrimary: true}) - public id: number - - @belongsTo(() => User) - public user: BelongsTo - - @column() - public userId: number - - @column() - public message: string - - @column.dateTime({ autoCreate: true }) - public createdAt: DateTime - - @column.dateTime({ autoCreate: true, autoUpdate: true }) - public updatedAt: DateTime -} diff --git a/app/Models/User.ts b/app/Models/User.ts index 2ba03fc..78eb5fe 100755 --- a/app/Models/User.ts +++ b/app/Models/User.ts @@ -1,7 +1,6 @@ import {DateTime} from 'luxon' import Hash from '@ioc:Adonis/Core/Hash' -import {BaseModel, beforeSave, column, hasOne, HasOne,} from '@ioc:Adonis/Lucid/Orm' -import GuestbookMessage from "App/Models/GuestbookMessage"; +import {BaseModel, beforeSave, column} from '@ioc:Adonis/Lucid/Orm' export default class User extends BaseModel { @column({isPrimary: true}) @@ -25,9 +24,6 @@ export default class User extends BaseModel { @column() public rememberMeToken?: string - @hasOne(() => GuestbookMessage) - public guestbook_message: HasOne - @column.dateTime({autoCreate: true}) public createdAt: DateTime diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts deleted file mode 100755 index 7868f01..0000000 --- a/app/Validators/guestbook/GuestValidator.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class GuestValidator { - public messages = { - required: 'The field {{field}} is required', - 'email.email': 'The email is not correct' - } - - public schema = schema.create({ - message: schema.string({}, [ - rules.required() - ]), - email: schema.string({}, [ - rules.email() - ]) - }) - - constructor (protected ctx: HttpContextContract) { - } -} diff --git a/config/ally.ts b/config/ally.ts deleted file mode 100644 index 1307fbf..0000000 --- a/config/ally.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Config source: https://git.io/JOdi5 - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import {AllyConfig} from '@ioc:Adonis/Addons/Ally' - -/* -|-------------------------------------------------------------------------- -| Ally Config -|-------------------------------------------------------------------------- -| -| The `AllyConfig` relies on the `SocialProviders` interface which is -| defined inside `contracts/ally.ts` file. -| -*/ -const allyConfig: AllyConfig = { - /* - |-------------------------------------------------------------------------- - | Github driver - |-------------------------------------------------------------------------- - */ - github: { - driver: 'github', - clientId: Env.get('GITHUB_CLIENT_ID'), - clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/github`, - }, - /* - |-------------------------------------------------------------------------- - | Google driver - |-------------------------------------------------------------------------- - */ - google: { - driver: 'google', - clientId: Env.get('GOOGLE_CLIENT_ID'), - clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/google`, - }, - /* - |-------------------------------------------------------------------------- - | Twitter driver - |-------------------------------------------------------------------------- - */ - twitter: { - driver: 'twitter', - clientId: Env.get('TWITTER_CLIENT_ID'), - clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/twitter`, - }, - /* - |-------------------------------------------------------------------------- - | Discord driver - |-------------------------------------------------------------------------- - */ - discord: { - driver: 'discord', - clientId: Env.get('DISCORD_CLIENT_ID'), - clientSecret: Env.get('DISCORD_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/discord`, - }, -} - -export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts deleted file mode 100644 index e9de077..0000000 --- a/contracts/ally.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Contract source: https://git.io/JOdiQ - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - -declare module '@ioc:Adonis/Addons/Ally' { - interface SocialProviders { - github: { - config: GithubDriverConfig - implementation: GithubDriverContract - } - google: { - config: GoogleDriverConfig - implementation: GoogleDriverContract - } - twitter: { - config: TwitterDriverConfig - implementation: TwitterDriverContract - } - discord: { - config: DiscordDriverConfig - implementation: DiscordDriverContract - } - } -} diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts deleted file mode 100644 index 8ef518d..0000000 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ /dev/null @@ -1,22 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class GuestbookMessages extends BaseSchema { - protected tableName = 'guestbook_messages' - - public async up() { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table - .integer('user_id') - .unsigned() - .references('users.id') - .onDelete('CASCADE') - table.text('message').notNullable() - table.timestamps(true, true) - }) - } - - public async down() { - this.schema.dropTable(this.tableName) - } -} diff --git a/package.json b/package.json index fcf78be..e7631ed 100755 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "youch-terminal": "^1.1.1" }, "dependencies": { - "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "^5.1.10", diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index cf68c3b..9e67254 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -24,8 +24,4 @@ Route.group(() => { }).prefix('/posts') Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) - - Route.resource('/guestbook', 'GuestBookController').except(['edit', 'create', 'destroy']) - Route.get('/guestbook/:email', 'GuestBookController.exists') - }).middleware('auth') diff --git a/start/routes/auth.ts b/start/routes/auth.ts index e6975ef..f2f9c50 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -6,23 +6,5 @@ Route.group(() => { Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') - - Route.post('/twitter/callback', 'AuthController.twitter') - Route.post('/github/callback', 'AuthController.github') - Route.post('/google/callback', 'AuthController.google') - Route.post('/discord/callback', 'AuthController.discord') - - Route.get('/twitter', async ({ ally }) => { - return ally.use('twitter').redirect() - }) - Route.get('/github', async ({ ally }) => { - return ally.use('github').stateless().redirect() - }) - Route.get('/google', async ({ ally }) => { - return ally.use('google').redirect() - }) - Route.get('/discord', async ({ ally }) => { - return ally.use('discord').redirect() - }) }).prefix('/auth') diff --git a/tsconfig.json b/tsconfig.json index 1194e95..3cffb77 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,6 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally", "@adonisjs/bouncer" ] } diff --git a/yarn.lock b/yarn.lock index 609095f..98d8fc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,14 +17,6 @@ slash "^3.0.0" term-size "^2.2.1" -"@adonisjs/ally@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" - integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== - dependencies: - "@poppinss/oauth-client" "^2.0.4" - "@poppinss/utils" "^3.1.3" - "@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.6": version "5.1.6" resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.6.tgz#da3043163b49ab35aa5dc1bfcc4ed4ba38d63f65" @@ -450,15 +442,6 @@ safe-buffer "5.2.1" uid-safe "2.1.5" -"@poppinss/oauth-client@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" - integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== - dependencies: - "@types/luxon" "^1.26.5" - got "^11.8.2" - luxon "^1.27.0" - "@poppinss/prompts@^1.2.2", "@poppinss/prompts@^1.2.3": version "1.2.3" resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.3.tgz#c9e7461837a99919d3ccb015aa33afe899a92f0c" @@ -558,7 +541,7 @@ dependencies: "@types/node" "*" -"@types/luxon@^1.26.5", "@types/luxon@^1.27.1": +"@types/luxon@^1.27.1": version "1.27.1" resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg==