Subject.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace fphammerle\yii2\auth\clientcert;
  3. class Subject extends \yii\db\ActiveRecord
  4. {
  5. public static function tableName()
  6. {
  7. return 'identity_cert_subject';
  8. }
  9. public function __construct(\yii\web\IdentityInterface $identity = null, $dn = null)
  10. {
  11. if($identity !== null) {
  12. $this->identity_id = $identity->getId();
  13. } else {
  14. $this->identity_id = null;
  15. }
  16. $this->distinguished_name = $dn;
  17. }
  18. public function rules()
  19. {
  20. return [
  21. [['distinguished_name', 'identity_id'], 'required'],
  22. [['distinguished_name'], 'required'],
  23. [['distinguished_name'], 'string'],
  24. [['distinguished_name'], 'unique'],
  25. [['identity_id'], self::getIdentityIdSchema()->type],
  26. ];
  27. }
  28. public static function getIdentityClass()
  29. {
  30. return \Yii::$app->user->identityClass;
  31. }
  32. /**
  33. * @return \yii\db\TableSchema
  34. */
  35. public static function getIdentityTableSchema()
  36. {
  37. $cls = Subject::getIdentityClass();
  38. return (new $cls)->getTableSchema();
  39. }
  40. /**
  41. * @return \yii\db\ColumnSchema
  42. */
  43. public static function getIdentityIdSchema()
  44. {
  45. $keys = array_filter(
  46. self::getIdentityTableSchema()->columns,
  47. function($c) { return $c->isPrimaryKey; }
  48. );
  49. assert(sizeof($keys) == 1);
  50. return array_pop($keys);
  51. }
  52. // public function getIdentity()
  53. // {
  54. // return $this->hasOne(
  55. // self::getIdentityClass(),
  56. // [Subject::getIdentityIdSchema()->name => 'identity_id']
  57. // );
  58. // }
  59. }