Subject.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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($identity_id = null, $dn = null)
  10. {
  11. $this->identity_id = $identity_id;
  12. $this->distinguished_name = $dn;
  13. }
  14. public function rules()
  15. {
  16. return [
  17. [['distinguished_name', 'identity_id'], 'required'],
  18. [['distinguished_name'], 'required'],
  19. [['distinguished_name'], 'string'],
  20. [['distinguished_name'], 'unique'],
  21. [['identity_id'], self::getIdentityIdSchema()->type],
  22. ];
  23. }
  24. public static function getIdentityClass()
  25. {
  26. return \Yii::$app->user->identityClass;
  27. }
  28. /**
  29. * @return \yii\db\TableSchema
  30. */
  31. public static function getIdentityTableSchema()
  32. {
  33. $cls = Subject::getIdentityClass();
  34. return (new $cls)->getTableSchema();
  35. }
  36. /**
  37. * @return \yii\db\ColumnSchema
  38. */
  39. public static function getIdentityIdSchema()
  40. {
  41. $keys = array_filter(
  42. self::getIdentityTableSchema()->columns,
  43. function($c) { return $c->isPrimaryKey; }
  44. );
  45. assert(sizeof($keys) == 1);
  46. return array_pop($keys);
  47. }
  48. // public function getIdentity()
  49. // {
  50. // return $this->hasOne(self::getIdentityClass(), ['id' => 'identity_id']);
  51. // }
  52. }