Dan*_*ell 7 ruby-on-rails devise omniauth
我有一个关于如何处理集成设计的问题.我有两个型号Company和User.在我的情况下,用户将注册我的应用程序,然后呈现选项将应用程序连接到他们的不同帐户(Twitter,Facebook和LinkedIn),以便他们可以查看/创建帖子/推文/等.由于Company has_many Users社交媒体帐户属于公司,因此我希望Company使用另一个名为Provider存储凭据的模型将凭据绑定到模型,从而允许任何有权访问公司社交媒体帐户的用户.
我一直在关注如何配置多个omniauth提供程序的各种教程,但它们都专注于将它们绑定到用户模型并告诉我添加devise :omniauthable到我的用户模型.
如何制作Companyomniauthable而不是用户?如果我不打算允许用户身份验证/注册视图omniauth,我是否甚至需要使我的模型无法实现?
这是我第一次构建社交媒体集成,所以我希望我的问题有道理.谢谢!
经过深思熟虑,我想出了一种非常有效的方法,并且比我最初尝试的方法简单得多。这看起来像是一种黑客攻击,所以我当然愿意看看是否有人有更干净的方法。
我做的第一件事就是放弃让公司模型成为全可验证的,因为我不希望用户以公司身份登录,而是以公司用户的身份登录。相反,我将用户模型设为omniauthable,然后创建一个Identity模型,其中包含belongs_to用户和公司。User以及Company两者has_one Identity。一旦用户授权提供商,就会创建一个新身份。
由于用户和公司都拥有该身份,因此belong_to该公司的其他用户可以通过该公司访问该身份。同样,如果用户登录但没有任何身份,系统将检查其公司是否有任何身份,然后才允许他们添加身份。这样,每个公司的每个提供商只有一个身份,并且哪个用户创建它并不重要。
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |