subj_models 0.1.03 → 0.1.04
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.rb +1 -2
- data/lib/subj_models/user.rb +99 -0
- data/lib/subj_models/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6765247548ac23e7be393451439a03b56a857825
|
4
|
+
data.tar.gz: bddc812ec6f1b1811c367a535f87cf38256dd36d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad866aa40debc766de5c9b025af568c25c98d07f23c62d17e630eb576e0562c8ce00c323a5f46d53560ef6aca3f97b644888f87abf5c00d52fef57584b90f941
|
7
|
+
data.tar.gz: d598b3ac3496b583a221c6412f8bce5fa5b2c03a43491e3d1ad60fddeda4eb2fa9c7301d511df5f6c7afb628c5c2ec8f0a44f64ccd01f832cf4f3cd6fc190a0c
|
data/lib/subj_models.rb
CHANGED
@@ -0,0 +1,99 @@
|
|
1
|
+
module SubjModels
|
2
|
+
|
3
|
+
module User
|
4
|
+
|
5
|
+
include ComprisingExternalId
|
6
|
+
include TypesSupport::UserTypes
|
7
|
+
include TypesSupport::CardReceiveTypes
|
8
|
+
include RademadeAdmin::UserModule
|
9
|
+
include SharedScopes
|
10
|
+
include ValuesChecker
|
11
|
+
|
12
|
+
enum user_type: USER_TYPES
|
13
|
+
enum card_receive_type: CARD_RECEIVE_TYPES
|
14
|
+
|
15
|
+
has_many :orders
|
16
|
+
has_many :user_specialization_approvals, dependent: :destroy
|
17
|
+
has_many :user_cards, dependent: :destroy
|
18
|
+
has_one :user_work_place, dependent: :destroy
|
19
|
+
has_many :user_delivery_addresses, dependent: :destroy
|
20
|
+
|
21
|
+
has_and_belongs_to_many :user_specializations
|
22
|
+
|
23
|
+
belongs_to :document_file
|
24
|
+
belongs_to :city
|
25
|
+
belongs_to :avatar, class_name: "DocumentFile"
|
26
|
+
|
27
|
+
validates :first_name, :last_name, presence: true,
|
28
|
+
on: :update,
|
29
|
+
unless: lambda { |user| user.legal_person? || user.skip_validations }
|
30
|
+
validates :email, uniqueness: { case_sensitive: false }, presence: true,
|
31
|
+
on: :update,
|
32
|
+
unless: :skip_validations
|
33
|
+
validates :phone, uniqueness: { case_sensitive: false }, presence: true,
|
34
|
+
on: :update,
|
35
|
+
unless: :skip_validations
|
36
|
+
validates :user_type, inclusion: { in: user_types.keys },
|
37
|
+
on: :update,
|
38
|
+
unless: :skip_validations
|
39
|
+
|
40
|
+
|
41
|
+
attr_accessor :skip_validations
|
42
|
+
|
43
|
+
scope :external_id, -> external_id do
|
44
|
+
external_id ? where(external_id: external_id) : User.none
|
45
|
+
end
|
46
|
+
|
47
|
+
def natural_person?
|
48
|
+
user_type == USER_TYPES.key(NATURAL_PERSON)
|
49
|
+
end
|
50
|
+
|
51
|
+
def legal_person?
|
52
|
+
user_type == USER_TYPES.key(LEGAL_PERSON)
|
53
|
+
end
|
54
|
+
|
55
|
+
def user_type=(value)
|
56
|
+
super(check_string_for_int(value))
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.get_by_email(email)
|
60
|
+
self.where(:email => email).first
|
61
|
+
end
|
62
|
+
|
63
|
+
def password=(password)
|
64
|
+
self.encrypted_password = encrypt_password(password) unless password.blank?
|
65
|
+
end
|
66
|
+
|
67
|
+
def password
|
68
|
+
self.encrypted_password
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_password?(password)
|
72
|
+
self.encrypted_password == encrypt_password(password)
|
73
|
+
end
|
74
|
+
|
75
|
+
def to_s
|
76
|
+
email
|
77
|
+
end
|
78
|
+
|
79
|
+
def admin?
|
80
|
+
self.user_type == 'админ'
|
81
|
+
end
|
82
|
+
|
83
|
+
def available_nomenclature_ids
|
84
|
+
Nomenclature.joins(access_groups: [user_specializations: :users]).where("users.id" => self.id).uniq.pluck(:id)
|
85
|
+
end
|
86
|
+
|
87
|
+
def available_categories_ids
|
88
|
+
Category.joins(:nomenclatures).where("nomenclatures.id IN (?) OR nomenclatures.is_professional=FALSE", available_nomenclature_ids).uniq.pluck(:id)
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def encrypt_password(password)
|
94
|
+
Digest::SHA1.hexdigest(password)
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
data/lib/subj_models/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: subj_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.04
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denys Dvoriashyn
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- bin/setup
|
59
59
|
- lib/subj_models.rb
|
60
60
|
- lib/subj_models/measure_unit.rb
|
61
|
+
- lib/subj_models/user.rb
|
61
62
|
- lib/subj_models/version.rb
|
62
63
|
- subj_models.gemspec
|
63
64
|
- subj_models.iml
|