Sha256: 10d3369109941280195a233250268565d0d315d3c5c2605642eba814916f07e8

Contents?: true

Size: 670 Bytes

Versions: 1

Compression:

Stored size: 670 Bytes

Contents

module Daidan
  class LoginUser < BaseMutation
    argument :email, String, required: true
    argument :password, String, required: true

    field :token, String, null: false
    field :user, BaseUserType, null: false

    def resolve(email:, password:)
      user = User.where(email: email).first

      raise GraphQL::ExecutionError, 'Invalid email or password' unless user && user.authenticate(password)

      exp_time = Time.now.to_i + (24 * 60 * 60)
      payload = {
        user_id: user.id,
        exp: exp_time
      }

      token = JWT.encode(payload, ENV['JWT_SECRET'], 'HS256')
      {
        token: token,
        user: user
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
daidan-0.2.0 lib/daidan/graphql/mutations/login_user.rb