sis_core 1.0.4 → 1.0.9
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/app/controllers/sis/core/application_controller.rb +10 -2
- data/app/controllers/sis/core/menus_controller.rb +22 -0
- data/app/controllers/sis/core/users_controller.rb +71 -0
- data/app/models/sis/core/academic_programme.rb +15 -5
- data/app/models/sis/core/academic_year.rb +1 -1
- data/app/models/sis/core/applicant.rb +18 -1
- data/app/models/sis/core/application.rb +6 -3
- data/app/models/sis/core/application_document.rb +3 -1
- data/app/models/sis/core/application_module.rb +8 -0
- data/app/models/sis/core/application_setup.rb +18 -9
- data/app/models/sis/core/document_requirement.rb +4 -1
- data/app/models/sis/core/exam.rb +7 -1
- data/app/models/sis/core/exam_result.rb +7 -1
- data/app/models/sis/core/exam_setup.rb +12 -4
- data/app/models/sis/core/menu.rb +11 -0
- data/app/models/sis/core/programme_level.rb +1 -1
- data/app/models/sis/core/semester.rb +2 -0
- data/app/models/sis/core/user.rb +13 -0
- data/app/models/sis/core/user_role.rb +10 -0
- data/app/services/sis/core/user_service.rb +25 -0
- data/app/uploaders/sis/core/application_document_uploader.rb +51 -0
- data/app/uploaders/sis/core/photo_uploader.rb +51 -0
- data/config/routes.rb +6 -0
- data/db/migrate/20200106133937_create_sis_core_applicants.rb +17 -3
- data/db/migrate/20200107094449_create_sis_core_applications.rb +4 -6
- data/db/migrate/20200107101638_create_sis_core_application_documents.rb +1 -1
- data/db/migrate/20200507114003_create_sis_core_users.rb +17 -0
- data/db/migrate/20200511165121_create_sis_core_application_modules.rb +15 -0
- data/db/migrate/20200511165241_create_sis_core_user_roles.rb +15 -0
- data/db/migrate/20200511165450_create_sis_core_menus.rb +18 -0
- data/lib/authorize_request.rb +18 -0
- data/lib/json_web_token.rb +12 -0
- data/lib/sis/core/engine.rb +2 -0
- data/lib/sis/core/version.rb +1 -1
- data/lib/sis_core.rb +4 -2
- data/spec/factories/sis/core/academic_years.rb +1 -1
- data/spec/factories/sis/core/applicants.rb +11 -2
- data/spec/factories/sis/core/application_modules.rb +6 -0
- data/spec/factories/sis/core/applications.rb +1 -6
- data/spec/factories/sis/core/menus.rb +9 -0
- data/spec/factories/sis/core/programme_levels.rb +1 -1
- data/spec/factories/sis/core/user_roles.rb +6 -0
- data/spec/factories/sis/core/users.rb +9 -0
- metadata +87 -14
- data/app/models/sis/core/staff.rb +0 -21
- data/app/models/user.rb +0 -12
- data/config/initializers/devise_token_auth.rb +0 -55
- data/db/migrate/20200108092202_devise_token_auth_create_users.rb +0 -53
- data/db/migrate/20200316120805_create_sis_core_staffs.rb +0 -31
- data/db/migrate/20200319074334_modify_user.rb +0 -16
- data/spec/factories/sis/core/staffs.rb +0 -35
- data/spec/factories/users.rb +0 -11
@@ -0,0 +1,51 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class PhotoUploader < CarrierWave::Uploader::Base
|
4
|
+
# Include RMagick or MiniMagick support:
|
5
|
+
# include CarrierWave::RMagick
|
6
|
+
# include CarrierWave::MiniMagick
|
7
|
+
|
8
|
+
# Choose what kind of storage to use for this uploader:
|
9
|
+
storage :file
|
10
|
+
# storage :fog
|
11
|
+
|
12
|
+
# Override the directory where uploaded files will be stored.
|
13
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
14
|
+
def store_dir
|
15
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
16
|
+
end
|
17
|
+
|
18
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
19
|
+
# def default_url(*args)
|
20
|
+
# # For Rails 3.1+ asset pipeline compatibility:
|
21
|
+
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
22
|
+
#
|
23
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
24
|
+
# end
|
25
|
+
|
26
|
+
# Process files as they are uploaded:
|
27
|
+
# process scale: [200, 300]
|
28
|
+
#
|
29
|
+
# def scale(width, height)
|
30
|
+
# # do something
|
31
|
+
# end
|
32
|
+
|
33
|
+
# Create different versions of your uploaded files:
|
34
|
+
# version :thumb do
|
35
|
+
# process resize_to_fit: [50, 50]
|
36
|
+
# end
|
37
|
+
|
38
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
39
|
+
# For images you might use something like this:
|
40
|
+
def extension_whitelist
|
41
|
+
%w[jpg jpeg gif png]
|
42
|
+
end
|
43
|
+
|
44
|
+
# Override the filename of the uploaded files:
|
45
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
46
|
+
# def filename
|
47
|
+
# "something.jpg" if original_filename
|
48
|
+
# end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/config/routes.rb
CHANGED
@@ -1,2 +1,8 @@
|
|
1
1
|
Sis::Core::Engine.routes.draw do
|
2
|
+
resources :users, only: [:create]
|
3
|
+
post '/login', controller: :users, action: :login
|
4
|
+
get '/menus', controller: :menus, action: :menu
|
5
|
+
post '/sign_in', controller: :users, action: :sign_in
|
6
|
+
post '/generate_recovery_token', controller: :users, action: :generate_recovery_token
|
7
|
+
post '/reset_password', controller: :users, action: :reset_password
|
2
8
|
end
|
@@ -1,9 +1,23 @@
|
|
1
1
|
class CreateSisCoreApplicants < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
create_table :sis_core_applicants do |t|
|
4
|
-
t.string :
|
5
|
-
t.string :
|
6
|
-
t.string :
|
4
|
+
t.string :first_name, null: false
|
5
|
+
t.string :middle_name, null: false
|
6
|
+
t.string :last_name, null: false
|
7
|
+
t.string :password_digest, null: false
|
8
|
+
t.string :email, null: false
|
9
|
+
t.string :alternative_email_address
|
10
|
+
t.string :primary_phone_number
|
11
|
+
t.string :alternative_telephone_number
|
12
|
+
t.date :date_of_birth
|
13
|
+
t.string :gender
|
14
|
+
t.string :nationality
|
15
|
+
t.string :address
|
16
|
+
t.string :photo
|
17
|
+
t.string :reset_password_token
|
18
|
+
t.datetime :reset_password_sent_at
|
19
|
+
t.string :secret_question
|
20
|
+
t.string :secret_question_answer
|
7
21
|
|
8
22
|
t.timestamps
|
9
23
|
end
|
@@ -1,14 +1,8 @@
|
|
1
1
|
class CreateSisCoreApplications < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
create_table :sis_core_applications do |t|
|
4
|
-
t.string :full_name, null: false
|
5
|
-
t.string :email, null: false
|
6
|
-
t.integer :age, null: false
|
7
|
-
t.string :gender, null: false
|
8
|
-
t.string :nationality, null: false
|
9
4
|
t.string :status, null: false, default: 'Draft'
|
10
5
|
t.boolean :payment_made, null: false, default: false
|
11
|
-
t.string :address
|
12
6
|
t.string :payment_information
|
13
7
|
t.date :application_date
|
14
8
|
t.references :applicant,
|
@@ -19,6 +13,10 @@ class CreateSisCoreApplications < ActiveRecord::Migration[6.0]
|
|
19
13
|
null: false,
|
20
14
|
index: { name: 'applications_on_ap_indx' },
|
21
15
|
foreign_key: { to_table: :sis_core_academic_programmes }
|
16
|
+
t.references :application_setup,
|
17
|
+
null: false,
|
18
|
+
index: { name: 'application_setup_on_ap_indx' },
|
19
|
+
foreign_key: { to_table: :sis_core_application_setups }
|
22
20
|
|
23
21
|
t.timestamps
|
24
22
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class CreateSisCoreApplicationDocuments < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
create_table :sis_core_application_documents do |t|
|
4
|
-
t.string :document
|
4
|
+
t.string :document
|
5
5
|
t.references :document_requirement,
|
6
6
|
null: false,
|
7
7
|
index: { name: 'ad_on_adr_indx' },
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateSisCoreUsers < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_users do |t|
|
4
|
+
t.string :first_name, null: false
|
5
|
+
t.string :last_name, null: false
|
6
|
+
t.string :email, null: false
|
7
|
+
t.boolean :active, default: true
|
8
|
+
t.string :password_digest, null: false
|
9
|
+
t.string :reset_password_token
|
10
|
+
t.datetime :reset_password_sent_at
|
11
|
+
t.string :secret_question
|
12
|
+
t.string :secret_question_answer
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSisCoreApplicationModules < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_application_modules do |t|
|
4
|
+
t.string :code, null: false
|
5
|
+
t.string :name, null: false
|
6
|
+
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
|
10
|
+
create_table :sis_core_application_modules_users, id: false do |t|
|
11
|
+
t.belongs_to :application_module, index: { name: 'app_module_on_app_modules_usr_indx' }
|
12
|
+
t.belongs_to :user, index: { name: 'usr_on_app_modules_usr_indx' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSisCoreUserRoles < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_user_roles do |t|
|
4
|
+
t.string :name, null: false
|
5
|
+
t.references :application_module, index: { name: 'app_module_on_usr_role_indx' }
|
6
|
+
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
|
10
|
+
create_table :sis_core_user_roles_users, id: false do |t|
|
11
|
+
t.belongs_to :user, index: { name: 'usr_on_usr_role_usrs_indx' }
|
12
|
+
t.belongs_to :user_role, index: { name: 'usr_role_on_usr_role_usrs_indx' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateSisCoreMenus < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_menus do |t|
|
4
|
+
t.string :text, null: false
|
5
|
+
t.string :icon_cls
|
6
|
+
t.string :location
|
7
|
+
t.integer :parent_id
|
8
|
+
t.references :application_module, index: { name: 'app_module_on_menus_indx' }
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
create_table :sis_core_menus_user_roles, id: false do |t|
|
14
|
+
t.belongs_to :menu, index: { name: 'menu_on_menus_usr_role_indx' }
|
15
|
+
t.belongs_to :user_role, index: { name: 'usr_role_on_menus_usr_role_indx' }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class AuthorizeRequest
|
2
|
+
class << self
|
3
|
+
def user(headers)
|
4
|
+
@user ||= User.find(decoded_auth_token(headers)[:id]) if decoded_auth_token(headers)
|
5
|
+
@user || nil
|
6
|
+
end
|
7
|
+
|
8
|
+
def decoded_auth_token(headers)
|
9
|
+
@decoded_auth_token ||= JsonWebToken.decode(http_auth_header(headers)) if http_auth_header(headers)
|
10
|
+
end
|
11
|
+
|
12
|
+
def http_auth_header(headers)
|
13
|
+
return headers['Authorization'].split(' ').last if headers['Authorization'].present?
|
14
|
+
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class JsonWebToken
|
2
|
+
class << self
|
3
|
+
def encode(payload)
|
4
|
+
JWT.encode(payload, Rails.application.secrets.secret_key_base)
|
5
|
+
end
|
6
|
+
|
7
|
+
def decode(token)
|
8
|
+
body = JWT.decode(token, Rails.application.secrets.secret_key_base)[0]
|
9
|
+
HashWithIndifferentAccess.new body
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/sis/core/engine.rb
CHANGED
data/lib/sis/core/version.rb
CHANGED
data/lib/sis_core.rb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :applicant, class: Sis::Core::Applicant do
|
3
|
-
|
3
|
+
first_name { FFaker::Name.name }
|
4
|
+
middle_name { FFaker::Name.name }
|
5
|
+
last_name { FFaker::Name.name }
|
6
|
+
password { FFaker::Name.name }
|
4
7
|
email { FFaker::Internet.email }
|
5
|
-
|
8
|
+
primary_phone_number { FFaker::PhoneNumber.phone_number }
|
9
|
+
alternative_telephone_number { FFaker::PhoneNumber.phone_number }
|
10
|
+
date_of_birth { '2000-10-05' }
|
11
|
+
gender { FFaker::Gender.binary }
|
12
|
+
nationality { FFaker::Name.name }
|
13
|
+
address { FFaker::Address.city }
|
14
|
+
photo { FFaker::Name.name }
|
6
15
|
end
|
7
16
|
end
|
@@ -1,16 +1,11 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :application, class: Sis::Core::Application do
|
3
|
-
full_name { FFaker::Name.name }
|
4
|
-
email { FFaker::Internet.email }
|
5
|
-
age { FFaker::Random.rand(20..30) }
|
6
|
-
gender { Sis::Core::Application::MALE }
|
7
|
-
nationality { FFaker::Address.country }
|
8
3
|
status { :draft }
|
9
4
|
payment_made { false }
|
10
5
|
payment_information { nil }
|
11
|
-
address { FFaker::Address.street_address }
|
12
6
|
application_date { Date.today }
|
13
7
|
association :applicant
|
14
8
|
association :academic_programme
|
9
|
+
association :application_setup
|
15
10
|
end
|
16
11
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sis_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aasm
|
@@ -39,7 +39,49 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.10.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bcrypt
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.1.7
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.1.7
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: carrierwave
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: carrierwave-base64
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: jwt
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
44
86
|
requirements:
|
45
87
|
- - ">="
|
@@ -72,6 +114,20 @@ dependencies:
|
|
72
114
|
- - ">="
|
73
115
|
- !ruby/object:Gem::Version
|
74
116
|
version: 6.0.2.1
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: sqlite3
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
75
131
|
- !ruby/object:Gem::Dependency
|
76
132
|
name: factory_bot_rails
|
77
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -143,19 +199,25 @@ dependencies:
|
|
143
199
|
- !ruby/object:Gem::Version
|
144
200
|
version: '0'
|
145
201
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
202
|
+
name: pg
|
147
203
|
requirement: !ruby/object:Gem::Requirement
|
148
204
|
requirements:
|
149
205
|
- - ">="
|
150
206
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0'
|
207
|
+
version: '0.18'
|
208
|
+
- - "<"
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '2.0'
|
152
211
|
type: :development
|
153
212
|
prerelease: false
|
154
213
|
version_requirements: !ruby/object:Gem::Requirement
|
155
214
|
requirements:
|
156
215
|
- - ">="
|
157
216
|
- !ruby/object:Gem::Version
|
158
|
-
version: '0'
|
217
|
+
version: '0.18'
|
218
|
+
- - "<"
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '2.0'
|
159
221
|
description: An engine which contains the core of the student information system app
|
160
222
|
as a layer.
|
161
223
|
email:
|
@@ -168,11 +230,14 @@ files:
|
|
168
230
|
- README.md
|
169
231
|
- Rakefile
|
170
232
|
- app/controllers/sis/core/application_controller.rb
|
233
|
+
- app/controllers/sis/core/menus_controller.rb
|
234
|
+
- app/controllers/sis/core/users_controller.rb
|
171
235
|
- app/models/sis/core/academic_programme.rb
|
172
236
|
- app/models/sis/core/academic_year.rb
|
173
237
|
- app/models/sis/core/applicant.rb
|
174
238
|
- app/models/sis/core/application.rb
|
175
239
|
- app/models/sis/core/application_document.rb
|
240
|
+
- app/models/sis/core/application_module.rb
|
176
241
|
- app/models/sis/core/application_record.rb
|
177
242
|
- app/models/sis/core/application_setup.rb
|
178
243
|
- app/models/sis/core/course.rb
|
@@ -186,15 +251,18 @@ files:
|
|
186
251
|
- app/models/sis/core/instructor.rb
|
187
252
|
- app/models/sis/core/instructor_course.rb
|
188
253
|
- app/models/sis/core/lookup.rb
|
254
|
+
- app/models/sis/core/menu.rb
|
189
255
|
- app/models/sis/core/programme.rb
|
190
256
|
- app/models/sis/core/programme_level.rb
|
191
257
|
- app/models/sis/core/programme_type.rb
|
192
258
|
- app/models/sis/core/semester.rb
|
193
|
-
- app/models/sis/core/staff.rb
|
194
259
|
- app/models/sis/core/student.rb
|
195
|
-
- app/models/user.rb
|
260
|
+
- app/models/sis/core/user.rb
|
261
|
+
- app/models/sis/core/user_role.rb
|
262
|
+
- app/services/sis/core/user_service.rb
|
263
|
+
- app/uploaders/sis/core/application_document_uploader.rb
|
264
|
+
- app/uploaders/sis/core/photo_uploader.rb
|
196
265
|
- config/database.ci.yml
|
197
|
-
- config/initializers/devise_token_auth.rb
|
198
266
|
- config/routes.rb
|
199
267
|
- db/migrate/20200105061717_create_sis_core_lookups.rb
|
200
268
|
- db/migrate/20200105072142_create_sis_core_academic_years.rb
|
@@ -209,14 +277,17 @@ files:
|
|
209
277
|
- db/migrate/20200107302251_create_sis_core_exam_setups.rb
|
210
278
|
- db/migrate/20200107333411_create_sis_core_exams.rb
|
211
279
|
- db/migrate/20200107434658_create_sis_core_exam_results.rb
|
212
|
-
- db/migrate/20200108092202_devise_token_auth_create_users.rb
|
213
280
|
- db/migrate/20200307033100_create_sis_core_courses.rb
|
214
281
|
- db/migrate/20200307071511_create_sis_core_instructors.rb
|
215
282
|
- db/migrate/20200307071736_create_sis_core_instructor_courses.rb
|
216
283
|
- db/migrate/20200307072006_create_sis_core_students.rb
|
217
284
|
- db/migrate/20200307072317_create_sis_core_course_registrations.rb
|
218
|
-
- db/migrate/
|
219
|
-
- db/migrate/
|
285
|
+
- db/migrate/20200507114003_create_sis_core_users.rb
|
286
|
+
- db/migrate/20200511165121_create_sis_core_application_modules.rb
|
287
|
+
- db/migrate/20200511165241_create_sis_core_user_roles.rb
|
288
|
+
- db/migrate/20200511165450_create_sis_core_menus.rb
|
289
|
+
- lib/authorize_request.rb
|
290
|
+
- lib/json_web_token.rb
|
220
291
|
- lib/sis/core.rb
|
221
292
|
- lib/sis/core/engine.rb
|
222
293
|
- lib/sis/core/version.rb
|
@@ -226,6 +297,7 @@ files:
|
|
226
297
|
- spec/factories/sis/core/academic_years.rb
|
227
298
|
- spec/factories/sis/core/applicants.rb
|
228
299
|
- spec/factories/sis/core/application_documents.rb
|
300
|
+
- spec/factories/sis/core/application_modules.rb
|
229
301
|
- spec/factories/sis/core/application_setups.rb
|
230
302
|
- spec/factories/sis/core/applications.rb
|
231
303
|
- spec/factories/sis/core/course_registrations.rb
|
@@ -238,13 +310,14 @@ files:
|
|
238
310
|
- spec/factories/sis/core/instructor_courses.rb
|
239
311
|
- spec/factories/sis/core/instructors.rb
|
240
312
|
- spec/factories/sis/core/lookups.rb
|
313
|
+
- spec/factories/sis/core/menus.rb
|
241
314
|
- spec/factories/sis/core/programme_levels.rb
|
242
315
|
- spec/factories/sis/core/programme_types.rb
|
243
316
|
- spec/factories/sis/core/programmes.rb
|
244
317
|
- spec/factories/sis/core/semesters.rb
|
245
|
-
- spec/factories/sis/core/staffs.rb
|
246
318
|
- spec/factories/sis/core/students.rb
|
247
|
-
- spec/factories/
|
319
|
+
- spec/factories/sis/core/user_roles.rb
|
320
|
+
- spec/factories/sis/core/users.rb
|
248
321
|
homepage: http://www.mks.com.et
|
249
322
|
licenses:
|
250
323
|
- MIT
|