2013-01-03 43 views
0

我正在寻找一种方法来允许私人注册或需要手动批准的注册。后者可以使用here中描述的策略完成,但是我认为如果我可以利用密码重置模块简化过程(使用一次性使用令牌发送电子邮件,但使用帐户创建的目的)。有没有人尝试过这样的事情,或者有更好的策略,可以更好地利用设计中的现有组件?设计 - 通过使用密码重置机制限制注册?

可能涉及:Ruby on rails: Devise, want to add invite code?

回答

2

我不得不承认我不是在设计用于其他用途来完成一些其他目标的框架协议使用功能的大风扇。

当我想要一个私人注册邀请您进入该应用程序的时候,我通常会做的只是将用户创建/注册放在应用程序中。毕竟Devise只是User模型的一个认证机制。

因此,在我目前的应用程序中,例如在现有用户邀请朋友的应用程序中有明确的方法。 邀请用户有一个表单,用于在新用户的用户表中为他的电子邮件地址创建一个条目,并提供一个字段告诉我用户是否已完成注册。我创建了一个可以保存到数据库的小令牌(SecureRandom.hex(8)是创建这种令牌的好方法)。 系统向新人发送电子邮件,告诉他在哪里注册(使用包含该令牌的URL),注册只是设置密码和其他字段的表单。

所有这些在Rails中都没有真正的魔力,它完全在2个控制器动作中,2个视图和1个邮件程序中完成,并且你绝不受任何API设计约束。

我只需要确保Devise不会对尚未兑换其邀请令牌的用户进行身份验证,但那就是了。

当然,不必编写注册视图很方便,但特别是当您处理部分信息时(邀请用户在我的案例中必须填写一些关于新用户的信息),只需要补充新用户只需要有规律的表单,你可以用它们做任何事情都很方便。

除非有人写了一个扩展设计的Gem来做这件事,我想我会坚持这种做法。

+0

我很欣赏这个输入,只是想确保我没有花费太多时间来重新发明轮子。 – prusswan

+0

我认为这是一个完美的地方,可以扩展Devise,所以不是每个人都必须重新发明轮子。我会看看是否可以将相关信息提取到Gem中。 – Tigraine

0

原来有第三种策略 - 我可以简单地锁定新账户(lockable,before_create过滤器)并提供手动解锁设施。