Skip to content

[register user/org] tenant create failed - Tenant must exist  #87

@sonq

Description

@sonq

Hello all!

I am trying to use milia with devise for my project however i am facing some issues.

When i try to create a user it gives me this error: ×
1 error prohibited this user from being saved:
Tenant must exist

And this is the log

Started POST "/users" for 127.0.0.1 at 2018-12-18 15:36:23 +0300
Processing by Milia::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"MfVgYtGpIITDL5qQBLTCCbgQ23CRc6ChlgNy64lXy9kwYDQcvmWIWHbQsZnkQdMFcolHhMvZAKoCevdp3zfy5w==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "tenant"=>{"name"=>"TTOPCO", "plan"=>"free"}, "commit"=>"Sign up"}
(0.1ms) BEGIN
Tenant Exists (0.3ms) SELECT 1 AS one FROM "tenants" WHERE "tenants"."name" = $1 LIMIT $2 [["name", "TTOPCO"], ["LIMIT", 1]]
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]]
MILIA >>>>> [register user/org] tenant create failed - Tenant must exist
Rendering devise/registrations/new.html.erb within layouts/application
Rendered devise/shared/_links.html.erb (1.0ms)
Rendered devise/registrations/new.html.erb within layouts/application (6.0ms)
(0.2ms) COMMIT
Completed 200 OK in 193ms (Views: 57.4ms | ActiveRecord: 1.0ms)

This is my User model

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  acts_as_universal_and_determines_account
  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :validatable
end

and this is my tenant model

> class Tenant < ApplicationRecord

  acts_as_universal_and_determines_tenant
  has_many :members, dependent: :destroy

  validates_uniqueness_of :name
  validates_presence_of :name

    def self.create_new_tenant(tenant_params, user_params, coupon_params)

      tenant = Tenant.new(tenant_params)

      if new_signups_not_permitted?(coupon_params)

        raise ::Milia::Control::MaxTenantExceeded, "Sorry, new accounts not permitted at this time" 

      else 
        tenant.save    # create the tenant
      end
      return tenant
    end

  # ------------------------------------------------------------------------
  # new_signups_not_permitted? -- returns true if no further signups allowed
  # args: params from user input; might contain a special 'coupon' code
  #       used to determine whether or not to allow another signup
  # ------------------------------------------------------------------------
  def self.new_signups_not_permitted?(params)
    return false
  end

  # ------------------------------------------------------------------------
  # tenant_signup -- setup a new tenant in the system
  # CALLBACK from devise RegistrationsController (milia override)
  # AFTER user creation and current_tenant established
  # args:
  #   user  -- new user  obj
  #   tenant -- new tenant obj
  #   other  -- any other parameter string from initial request
  # ------------------------------------------------------------------------
    def self.tenant_signup(user, tenant, other = nil)
      #  StartupJob.queue_startup( tenant, user, other )
      # any special seeding required for a new organizational tenant
      #
      Member.create_org_admin(user)
      #
    end

   
end

I am using rails 5.1. I tried to comment out the config.load_defaults 5.1 in my application.rb file however i got this error

Started POST "/users" for 127.0.0.1 at 2018-12-18 15:55:38 +0300
Processing by Milia::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"YPEO6XBrOYWrWEutVKH71VUWc/cj0z8r1lnk5g0+IzFhZFqXH6eRWR6nYKS0VOrZn4/vA3l5nyBCIGFkW14aDw==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "tenant"=>{"name"=>"test", "plan"=>"free"}, "commit"=>"Sign up"}
(0.2ms) BEGIN
Tenant Exists (1.0ms) SELECT 1 AS one FROM "tenants" WHERE "tenants"."name" = $1 LIMIT $2 [["name", "test"], ["LIMIT", 1]]
SQL (0.6ms) INSERT INTO "tenants" ("name", "created_at", "updated_at", "plan") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "test"], ["created_at", "2018-12-18 12:55:38.641784"], ["updated_at", "2018-12-18 12:55:38.641784"], ["plan", "free"]]
MILIA >>>>> [change tenant] new: 32 old: %
User Exists (0.9ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]]
SQL (0.5ms) INSERT INTO "users" ("email", "encrypted_password", "confirmation_token", "confirmation_sent_at", "skip_confirm_change_password", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["email", "[email protected]"], ["encrypted_password", "$2a$11$l4ZxbFsxh2cJmtUMXS4qtOr6yu6pyvM/cFEwCZPsOgjbcJIOkzzIK"], ["confirmation_token", "b6JnpycEemiXSsy1qv7G"], ["confirmation_sent_at", "2018-12-18 12:55:38.776925"], ["skip_confirm_change_password", "t"], ["created_at", "2018-12-18 12:55:38.776678"], ["updated_at", "2018-12-18 12:55:38.776678"]]
Tenant Load (0.5ms) SELECT "tenants".* FROM "tenants" WHERE (tenants.tenant_id IS NULL) AND "tenants"."id" = $1 LIMIT $2 [["id", 32], ["LIMIT", 1]]
User Exists (1.0ms) SELECT 1 AS one FROM "users" INNER JOIN "tenants_users" ON "users"."id" = "tenants_users"."user_id" WHERE (users.tenant_id IS NULL) AND "tenants_users"."tenant_id" = $1 AND "users"."id" = $2 LIMIT $3 [["tenant_id", 32], ["id", 29], ["LIMIT", 1]]
SQL (0.3ms) INSERT INTO "tenants_users" ("tenant_id", "user_id") VALUES ($1, $2) [["tenant_id", 32], ["user_id", 29]]
MILIA >>>>> [register user/org] devise: signup user success -
Redirected to http://localhost:3000/
MILIA >>>>> [register user/org] signup user/tenant success -
(0.4ms) ROLLBACK
Completed 500 Internal Server Error in 385ms (ActiveRecord: 12.9ms)

NoMethodError (undefined method `create_member' for #User:0x00007f8ea77944c8
Did you mean? created_at):

app/models/member.rb:13:in create_new_member' app/models/member.rb:17:in create_org_admin'
app/models/tenant.rb:45:in `tenant_signup'

Thanks in advance!
Soner

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions