saberma/19wu — pull request #254 by windduke (2013-02-18 08:36:59+00:00)
Title: Feature/246 events invitations workflow prototyping

@saberma, @doitian。 我做了一个内测即邀请机制的实现，仅是流程的验证。不是 #246 的正式提交。如果这个邀请机制的流程认为可行的话，我会再提交一个PR包括完整的测试代码，I18n和改进。另外这个实现里由于还没加入测试代码所以在 check_invitation这个filter中如果遇到是测试环境直接返回，即把内测状态跳过去。

具体的实现是：

1. 用户分类： 管理员（起初不可发起活动，需要邀请码激活），一般用户（起初不可发起活动，需要邀请码激活）， 可发起活动的用户（激活之后）

2. 具体流程：

2.1 一般用户登陆以后，当按“发起活动”时，且当他从来没有发出邀请请求的时候，
页面跳转到“邀请申请”页面（new_invitation_path）

2.2 点击 “request new invitation code”链接，系统提示请等待管理员批准邀请请求。
在管理员批准用户邀请请求之前，用户再次点击“发起活动”时，系统提示用户
等待管理员批准。

2.3 管理员登陆系统后，点击屏幕右上角“Admin Panel” 链接进入邀请请求管理界面。
如果非管理员身份登陆系统点击此链接，系统会提示用户没有权限进入。

2.4 邀请请求管理界面会列出和邀请相关的用户。当用户发出邀请请求但还未审核通过
的时候，用户邮箱地址旁边的按钮会显示“approve me”。 然后管理员点击“approve me”
按钮，系统会生成邀请码并且邮件发送给用户， 按钮会变灰并显示“approved”。 但有
可能用户没有收到邀请码邮件或者邀请码邮件丢失，用户可以在被管理员approve以
后，重新请求邀请码，请求以后，管理员界面中此用户的按钮又会变为“approve me”。
管理员可以重新点击此按钮生成新的邀请码并邮件给用户。

2.5 用户收到邀请码以后再次点击“发起活动”，正确输入邀请码，用户便可以创建新的活
动。在管理员界面中，此用户的按钮显示为“activated”，即已经激活。

2.6 用户登出后，下次再登陆系统点击“发起活动”按钮时，可以正常进入发起活动页面。

另外加入了新的seed包括： 管理员角色; 管理员帐户： admin@19wu.com 密码：666666

有个问题：目前是通过check_invitation这个filter来控制系统是否处于内测状态。我的想法是有没有可能在配置文件中规定系统的状态：是内测状态还是正常状态。当在配置文件中声明系统为内测状态时，系统在启动时装载check_invitation这个filter；当系统设定为正常状态时不装载check_invitation这个filter。或者通过某种方式实现系统在“内测”和“正常”状态之间进行切换？