subj_models 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/subj_models/user.rb +87 -87
- data/lib/subj_models/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58c9095022d762f67b179a80e32cc253a303abe8
|
4
|
+
data.tar.gz: 12143544b4fa26dc492a3c65e2e1d29d604a726c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 265b08e83fd48bc5a7f618702ae1f81c64a1ef2c9a2b1e01384ec37d611d1dad8423bc54c0fba62304fdeb2cf212788b8753c78a3e1bd066430788c5df6f6620
|
7
|
+
data.tar.gz: 209ddf0ea2913fb5eeaacc926ac4d0c86fff4591b91bb3397784c097e1d7a0952cafc7f3d62b2a731e2e41ee9c66e9e6e9ada18a9ee529e41a3abd634ab023bb
|
data/lib/subj_models/user.rb
CHANGED
@@ -1,117 +1,117 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'digest/sha1'
|
2
|
+
require 'subj_models/services/values_checker'
|
3
|
+
require 'subj_models/services/types_support'
|
4
4
|
|
5
|
-
|
5
|
+
module SubjModels
|
6
6
|
|
7
|
-
|
7
|
+
module User
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
include SubjModels::TypesSupport::UserTypes
|
10
|
+
include SubjModels::TypesSupport::CardReceiveTypes
|
11
|
+
include SubjModels::ValuesChecker
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
module ClassMethods
|
14
|
+
def get_by_email(email)
|
15
|
+
self.where(:email => email).first
|
16
|
+
end
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
def self.included(including_class)
|
20
|
+
including_class.extend ClassMethods
|
21
|
+
including_class.class_eval do
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
include ComprisingExternalId
|
24
|
+
include RademadeAdmin::UserModule
|
25
|
+
include SharedScopes
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
enum user_type: USER_TYPES
|
28
|
+
enum card_receive_type: CARD_RECEIVE_TYPES
|
29
29
|
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
30
|
+
# has_many :orders
|
31
|
+
# has_many :user_specialization_approvals, dependent: :destroy
|
32
|
+
# has_many :user_cards, dependent: :destroy
|
33
|
+
# has_one :user_work_place, dependent: :destroy
|
34
|
+
# has_many :user_delivery_addresses, dependent: :destroy
|
35
35
|
|
36
|
-
#
|
36
|
+
# has_and_belongs_to_many :user_specializations
|
37
37
|
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
38
|
+
# belongs_to :document_file
|
39
|
+
# belongs_to :city
|
40
|
+
# belongs_to :avatar, class_name: "DocumentFile"
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
42
|
+
validates :first_name, :last_name, presence: true,
|
43
|
+
on: :update,
|
44
|
+
unless: lambda { |user| user.legal_person? || user.skip_validations }
|
45
|
+
validates :email, uniqueness: { case_sensitive: false }, presence: true,
|
46
|
+
on: :update,
|
47
|
+
unless: :skip_validations
|
48
|
+
validates :phone, uniqueness: { case_sensitive: false }, presence: true,
|
49
|
+
on: :update,
|
50
|
+
unless: :skip_validations
|
51
|
+
validates :user_type, inclusion: { in: user_types.keys },
|
52
|
+
on: :update,
|
53
|
+
unless: :skip_validations
|
54
54
|
|
55
|
-
|
55
|
+
attr_accessor :skip_validations
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
scope :external_id, -> external_id do
|
58
|
+
external_id ? where(external_id: external_id) : User.none
|
59
|
+
end
|
60
60
|
|
61
|
-
|
61
|
+
end
|
62
62
|
|
63
|
-
|
63
|
+
end
|
64
64
|
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
def natural_person?
|
66
|
+
user_type == USER_TYPES.key(NATURAL_PERSON)
|
67
|
+
end
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
def legal_person?
|
70
|
+
user_type == USER_TYPES.key(LEGAL_PERSON)
|
71
|
+
end
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
def user_type=(value)
|
74
|
+
super(check_string_for_int(value))
|
75
|
+
end
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
def self.get_by_email(email)
|
78
|
+
self.where(:email => email).first
|
79
|
+
end
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
81
|
+
def password=(password)
|
82
|
+
self.encrypted_password = encrypt_password(password) unless password.blank?
|
83
|
+
end
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
def password
|
86
|
+
self.encrypted_password
|
87
|
+
end
|
88
88
|
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
def valid_password?(password)
|
90
|
+
self.encrypted_password == encrypt_password(password)
|
91
|
+
end
|
92
92
|
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
def to_s
|
94
|
+
email
|
95
|
+
end
|
96
96
|
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
def admin?
|
98
|
+
self.user_type == 'админ'
|
99
|
+
end
|
100
100
|
|
101
|
-
|
102
|
-
|
103
|
-
|
101
|
+
def available_nomenclature_ids
|
102
|
+
Nomenclature.joins(access_groups: [user_specializations: :users]).where("users.id" => self.id).uniq.pluck(:id)
|
103
|
+
end
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
def available_categories_ids
|
106
|
+
Category.joins(:nomenclatures).where("nomenclatures.id IN (?) OR nomenclatures.is_professional=FALSE", available_nomenclature_ids).uniq.pluck(:id)
|
107
|
+
end
|
108
108
|
|
109
|
-
|
109
|
+
private
|
110
110
|
|
111
|
-
|
112
|
-
|
113
|
-
|
111
|
+
def encrypt_password(password)
|
112
|
+
Digest::SHA1.hexdigest(password)
|
113
|
+
end
|
114
114
|
|
115
|
-
|
115
|
+
end
|
116
116
|
|
117
|
-
|
117
|
+
end
|
data/lib/subj_models/version.rb
CHANGED