Add consumable invites (#5814)
* Add consumable invites * Add UI for generating invite codes * Add tests * Display max uses and expiration in invites table, delete invite * Remove unused column and redundant validator - Default follows not used, probably bad idea - InviteCodeValidator is redundant because RegistrationsController checks invite code validity * Add admin setting to disable invites * Add admin UI for invites, configurable role for invite creation - Admin UI that lists everyone's invites, always available - Admin setting min_invite_role to control who can invite people - Non-admin invite UI only visible if users are allowed to * Do not remove invites from database, expire them instantly
This commit is contained in:
parent
0ea4478b68
commit
740f8a95a9
28 changed files with 439 additions and 5 deletions
15
db/migrate/20171125024930_create_invites.rb
Normal file
15
db/migrate/20171125024930_create_invites.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
class CreateInvites < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
create_table :invites do |t|
|
||||
t.belongs_to :user, foreign_key: { on_delete: :cascade }
|
||||
t.string :code, null: false, default: ''
|
||||
t.datetime :expires_at, null: true, default: nil
|
||||
t.integer :max_uses, null: true, default: nil
|
||||
t.integer :uses, null: false, default: 0
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :invites, :code, unique: true
|
||||
end
|
||||
end
|
5
db/migrate/20171125031751_add_invite_id_to_users.rb
Normal file
5
db/migrate/20171125031751_add_invite_id_to_users.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class AddInviteIdToUsers < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
add_reference :users, :invite, null: true, default: nil, foreign_key: { on_delete: :nullify }, index: false
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue