unsakini 0.0.4.2 → 0.0.4.3

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.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -0
  3. data/angular/angular-cli.json +5 -3
  4. data/angular/npm-debug.log +54 -0
  5. data/angular/package.json +4 -1
  6. data/angular/src/app/app.component.html +1 -4
  7. data/angular/src/app/app.module.ts +8 -7
  8. data/angular/src/app/app.routes.module.ts +12 -2
  9. data/angular/src/app/confirm-account/confirm-account.component.ts +27 -0
  10. data/angular/src/app/confirm-account/confirm-account.html +41 -0
  11. data/angular/src/app/confirm-account/confirm-account.module.ts +24 -0
  12. data/angular/src/app/confirm-account/confirm-account.scss +3 -0
  13. data/angular/src/app/confirm-account/confirm-account.service.ts +27 -0
  14. data/angular/src/app/confirm-account/index.ts +3 -0
  15. data/angular/src/app/index.ts +2 -0
  16. data/angular/src/app/login/index.ts +3 -0
  17. data/angular/src/app/login/login.component.ts +40 -0
  18. data/angular/src/app/login/login.html +43 -0
  19. data/angular/src/app/login/login.module.ts +27 -0
  20. data/angular/src/app/login/login.service.ts +48 -0
  21. data/angular/src/app/registration/index.ts +3 -0
  22. data/angular/src/app/registration/registration.component.html +70 -12
  23. data/angular/src/app/registration/registration.component.spec.ts +8 -11
  24. data/angular/src/app/registration/registration.component.ts +10 -8
  25. data/angular/src/app/registration/registration.module.ts +23 -0
  26. data/angular/src/app/registration/registration.service.ts +46 -0
  27. data/angular/src/app/registration/registration.services.spec.ts +71 -0
  28. data/angular/src/app/services/auth-http/auth.http.service.ts +35 -0
  29. data/angular/src/app/services/auth-http/index.ts +1 -0
  30. data/angular/src/app/services/http/http.service.spec.ts +205 -0
  31. data/angular/src/app/services/http/http.service.ts +40 -0
  32. data/angular/src/app/services/http/index.ts +1 -0
  33. data/angular/src/app/services/index.ts +3 -0
  34. data/angular/src/app/services/services.module.ts +33 -0
  35. data/angular/src/assets/global.scss +3 -0
  36. data/angular/src/environments/custom.ts +4 -0
  37. data/angular/src/environments/environment.prod.ts +2 -1
  38. data/angular/src/environments/environment.ts +2 -1
  39. data/angular/src/index.html +1 -1
  40. data/app/controllers/application_controller.rb +2 -2
  41. data/app/controllers/concerns/unsakini/board_owner_controller_concern.rb +42 -0
  42. data/app/controllers/concerns/unsakini/comment_owner_controller_concern.rb +36 -0
  43. data/app/controllers/concerns/unsakini/logged_in_controller_concern.rb +23 -0
  44. data/app/controllers/concerns/unsakini/post_owner_controller_concern.rb +38 -0
  45. data/app/controllers/concerns/unsakini/serializer_controller_concern.rb +13 -0
  46. data/app/controllers/unsakini/base_controller.rb +6 -0
  47. data/app/controllers/unsakini/boards_controller.rb +76 -0
  48. data/app/controllers/unsakini/comments_controller.rb +54 -0
  49. data/app/controllers/unsakini/posts_controller.rb +61 -0
  50. data/app/controllers/unsakini/share_board_controller.rb +122 -0
  51. data/app/controllers/unsakini/user_token_controller.rb +17 -0
  52. data/app/controllers/unsakini/users_controller.rb +69 -0
  53. data/app/controllers/unsakini/web_controller.rb +27 -0
  54. data/app/mailers/unsakini/user_mailer.rb +13 -0
  55. data/app/models/concerns/unsakini/encryptable_model_concern.rb +97 -0
  56. data/app/models/unsakini/application_record.rb +7 -0
  57. data/app/models/unsakini/board.rb +16 -0
  58. data/app/models/unsakini/comment.rb +12 -0
  59. data/app/models/unsakini/post.rb +15 -0
  60. data/app/models/unsakini/user.rb +43 -0
  61. data/app/models/unsakini/user_board.rb +84 -0
  62. data/app/models/unsakini.rb +5 -0
  63. data/app/serializers/unsakini/board_serializer.rb +7 -0
  64. data/app/serializers/{comment_serializer.rb → unsakini/comment_serializer.rb} +6 -3
  65. data/app/serializers/unsakini/post_serializer.rb +26 -0
  66. data/app/serializers/unsakini/user_board_serializer.rb +14 -0
  67. data/app/serializers/{user_serializer.rb → unsakini/user_serializer.rb} +5 -2
  68. data/app/views/unsakini/user_mailer/confirm_account.html.erb +3 -0
  69. data/app/views/{web_base → unsakini/web}/index.html.erb +9 -7
  70. data/config/routes.rb +10 -10
  71. data/db/migrate/20161116114222_create_unsakini_boards.rb +10 -0
  72. data/db/migrate/{20161116200034_create_user_boards.rb → 20161116200034_create_unsakini_user_boards.rb} +3 -2
  73. data/db/migrate/{20161118031023_create_posts.rb → 20161118031023_create_unsakini_posts.rb} +2 -2
  74. data/db/migrate/{20161118100454_create_comments.rb → 20161118100454_create_unsakini_comments.rb} +2 -2
  75. data/db/migrate/20161126145352_create_unsakini_users.rb +15 -0
  76. data/lib/generators/unsakini/config/config_generator.rb +3 -1
  77. data/lib/generators/unsakini/dependencies/USAGE +5 -0
  78. data/lib/generators/unsakini/dependencies/dependencies_generator.rb +19 -0
  79. data/lib/tasks/unsakini_tasks.rake +6 -37
  80. data/lib/unsakini/engine.rb +2 -0
  81. data/lib/unsakini/version.rb +1 -1
  82. data/public/images/unsakini.svg +56 -0
  83. data/public/unsakini/app/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
  84. data/public/unsakini/app/89889688147bd7575d6327160d64e760.svg +288 -0
  85. data/public/unsakini/app/assets/global.scss +3 -0
  86. data/public/unsakini/app/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
  87. data/public/unsakini/app/f4769f9bdb7466be65088239c12046d1.eot +0 -0
  88. data/public/unsakini/app/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
  89. data/{angular/dist → public/unsakini/app}/favicon.ico +0 -0
  90. data/public/unsakini/app/index.html +14 -0
  91. data/public/unsakini/app/inline.d41d8cd98f00b204e980.bundle.js +2 -0
  92. data/public/unsakini/app/inline.d41d8cd98f00b204e980.bundle.map +1 -0
  93. data/public/unsakini/app/main.54f49c65d3d20650a5d5.bundle.js +2152 -0
  94. data/public/unsakini/app/main.54f49c65d3d20650a5d5.bundle.js.gz +0 -0
  95. data/public/unsakini/app/main.54f49c65d3d20650a5d5.bundle.map +1 -0
  96. data/public/unsakini/app/styles.58e065928ed8ebd0b582.bundle.js +2 -0
  97. data/public/unsakini/app/styles.58e065928ed8ebd0b582.bundle.map +1 -0
  98. data/public/unsakini/app/styles.5dac0e986fce6f8738b300cb558b56a0.bundle.css +8 -0
  99. data/spec/concerns/models/encryptable_concern.rb +3 -2
  100. data/spec/controllers/{web_base_controller_spec.rb → web_controller_spec.rb} +4 -3
  101. data/spec/dummy/config/application.rb +3 -1
  102. data/spec/dummy/config/environments/development.rb +2 -0
  103. data/spec/dummy/config/initializers/knock.rb +59 -0
  104. data/spec/dummy/db/schema.rb +16 -14
  105. data/spec/dummy/db/test.sqlite3 +0 -0
  106. data/spec/factories/boards.rb +1 -1
  107. data/spec/factories/comments.rb +1 -1
  108. data/spec/factories/posts.rb +1 -1
  109. data/spec/factories/user_boards.rb +1 -1
  110. data/spec/factories/users.rb +1 -1
  111. data/spec/models/board_spec.rb +2 -2
  112. data/spec/models/comment_spec.rb +2 -2
  113. data/spec/models/post_spec.rb +2 -2
  114. data/spec/models/user_board_spec.rb +19 -19
  115. data/spec/models/user_spec.rb +1 -1
  116. data/spec/requests/{api/boards/api_boards_crud_spec.rb → boards/boards_crud_spec.rb} +26 -26
  117. data/spec/requests/{api/boards/api_boards_pagination_spec.rb → boards/boards_pagination_spec.rb} +7 -7
  118. data/spec/requests/{api/boards/api_private_board_spec.rb → boards/private_board_spec.rb} +26 -26
  119. data/spec/requests/{api/boards/api_shared_board_spec.rb → boards/shared_board_spec.rb} +9 -9
  120. data/spec/requests/{api/boards/api_sharing_board_spec.rb → boards/sharing_board_spec.rb} +13 -13
  121. data/spec/requests/{api/comments/api_comments_pagination_spec.rb → comments/comments_pagination_spec.rb} +3 -3
  122. data/spec/requests/{api/comments/api_comments_private_board_spec.rb → comments/comments_private_board_spec.rb} +20 -20
  123. data/spec/requests/{api/comments/api_comments_shared_board_spec.rb → comments/comments_shared_board_spec.rb} +17 -17
  124. data/spec/requests/{api/posts/api_posts_pagination_spec.rb → posts/posts_pagination_spec.rb} +3 -3
  125. data/spec/requests/{api/posts/api_posts_private_board_spec.rb → posts/posts_private_board_spec.rb} +22 -22
  126. data/spec/requests/{api/posts/api_posts_shared_board_spec.rb → posts/posts_shared_board_spec.rb} +24 -24
  127. data/spec/requests/{api/user/api_user_create_spec.rb → user/user_create_spec.rb} +19 -23
  128. data/spec/requests/{api/user/api_user_search_spec.rb → user/user_search_spec.rb} +9 -9
  129. data/spec/schema/jwt.json +9 -0
  130. data/spec/spec_helper.rb +1 -0
  131. data/spec/support/auth_helper.rb +0 -2
  132. metadata +133 -200
  133. data/angular/dist/index.html +0 -14
  134. data/angular/dist/inline.bundle.js +0 -139
  135. data/angular/dist/inline.map +0 -1
  136. data/angular/dist/main.bundle.js +0 -64689
  137. data/angular/dist/main.map +0 -1
  138. data/angular/dist/styles.bundle.js +0 -364
  139. data/angular/dist/styles.map +0 -1
  140. data/angular/src/styles.css +0 -1
  141. data/app/controllers/api/boards_controller.rb +0 -73
  142. data/app/controllers/api/comments_controller.rb +0 -51
  143. data/app/controllers/api/posts_controller.rb +0 -58
  144. data/app/controllers/api/share_board_controller.rb +0 -118
  145. data/app/controllers/api/users_controller.rb +0 -40
  146. data/app/controllers/concerns/board_owner_controller_concern.rb +0 -38
  147. data/app/controllers/concerns/comment_owner_controller_concern.rb +0 -33
  148. data/app/controllers/concerns/logged_in_controller_concern.rb +0 -21
  149. data/app/controllers/concerns/post_owner_controller_concern.rb +0 -36
  150. data/app/controllers/concerns/serializer_controller_concern.rb +0 -11
  151. data/app/controllers/user_token_controller.rb +0 -2
  152. data/app/controllers/web_base_controller.rb +0 -23
  153. data/app/models/application_record.rb +0 -5
  154. data/app/models/board.rb +0 -14
  155. data/app/models/comment.rb +0 -9
  156. data/app/models/concerns/encryptable_model_concern.rb +0 -96
  157. data/app/models/post.rb +0 -12
  158. data/app/models/user.rb +0 -15
  159. data/app/models/user_board.rb +0 -82
  160. data/app/serializers/board_serializer.rb +0 -5
  161. data/app/serializers/post_serializer.rb +0 -23
  162. data/app/serializers/user_board_serializer.rb +0 -11
  163. data/db/migrate/20161116114222_create_boards.rb +0 -9
  164. data/db/migrate/20161118221508_add_encrypted_password_to_user_board.rb +0 -5
  165. data/db/migrate/20161122211105_create_users.rb +0 -12
  166. data/db/migrate/20161124102633_add_is_shared_to_boards.rb +0 -5
  167. data/lib/generators/unsakini/angular/USAGE +0 -8
  168. data/lib/generators/unsakini/angular/angular_generator.rb +0 -7
  169. data/public/images/logo.svg +0 -619
  170. data/spec/dummy/config/initializers/assets.rb +0 -11
  171. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -5
  172. data/spec/dummy/config/initializers/session_store.rb +0 -3
  173. data/spec/dummy/db/development.sqlite3 +0 -0
  174. data/spec/dummy/db/migrate/20161124210219_create_boards.unsakini_engine.rb +0 -10
  175. data/spec/dummy/db/migrate/20161124210220_create_user_boards.unsakini_engine.rb +0 -12
  176. data/spec/dummy/db/migrate/20161124210221_create_posts.unsakini_engine.rb +0 -13
  177. data/spec/dummy/db/migrate/20161124210222_create_comments.unsakini_engine.rb +0 -12
  178. data/spec/dummy/db/migrate/20161124210223_add_encrypted_password_to_user_board.unsakini_engine.rb +0 -6
  179. data/spec/dummy/db/migrate/20161124210224_create_users.unsakini_engine.rb +0 -13
  180. data/spec/dummy/db/migrate/20161124210225_add_is_shared_to_boards.unsakini_engine.rb +0 -6
  181. data/spec/dummy/public/app/favicon.ico +0 -0
  182. data/spec/dummy/public/app/index.html +0 -14
  183. data/spec/dummy/public/app/inline.bundle.js +0 -139
  184. data/spec/dummy/public/app/inline.map +0 -1
  185. data/spec/dummy/public/app/main.bundle.js +0 -64689
  186. data/spec/dummy/public/app/main.map +0 -1
  187. data/spec/dummy/public/app/styles.bundle.js +0 -364
  188. data/spec/dummy/public/app/styles.map +0 -1
  189. data/spec/dummy/tmp/unsakini-ng2/LICENSE +0 -21
  190. data/spec/dummy/tmp/unsakini-ng2/README.md +0 -1
  191. data/spec/dummy/tmp/unsakini-ng2/angular-cli.json +0 -59
  192. data/spec/dummy/tmp/unsakini-ng2/e2e/app.e2e-spec.ts +0 -14
  193. data/spec/dummy/tmp/unsakini-ng2/e2e/app.po.ts +0 -11
  194. data/spec/dummy/tmp/unsakini-ng2/e2e/signup.e2e-spec.ts +0 -28
  195. data/spec/dummy/tmp/unsakini-ng2/e2e/signup.po.ts +0 -31
  196. data/spec/dummy/tmp/unsakini-ng2/e2e/tsconfig.json +0 -16
  197. data/spec/dummy/tmp/unsakini-ng2/karma.conf.js +0 -45
  198. data/spec/dummy/tmp/unsakini-ng2/package.json +0 -49
  199. data/spec/dummy/tmp/unsakini-ng2/protractor.conf.js +0 -32
  200. data/spec/dummy/tmp/unsakini-ng2/src/app/app.component.css +0 -0
  201. data/spec/dummy/tmp/unsakini-ng2/src/app/app.component.html +0 -4
  202. data/spec/dummy/tmp/unsakini-ng2/src/app/app.component.spec.ts +0 -47
  203. data/spec/dummy/tmp/unsakini-ng2/src/app/app.component.ts +0 -10
  204. data/spec/dummy/tmp/unsakini-ng2/src/app/app.module.ts +0 -29
  205. data/spec/dummy/tmp/unsakini-ng2/src/app/app.routes.module.ts +0 -29
  206. data/spec/dummy/tmp/unsakini-ng2/src/app/index.ts +0 -2
  207. data/spec/dummy/tmp/unsakini-ng2/src/app/registration/registration.component.css +0 -0
  208. data/spec/dummy/tmp/unsakini-ng2/src/app/registration/registration.component.html +0 -14
  209. data/spec/dummy/tmp/unsakini-ng2/src/app/registration/registration.component.spec.ts +0 -157
  210. data/spec/dummy/tmp/unsakini-ng2/src/app/registration/registration.component.ts +0 -42
  211. data/spec/dummy/tmp/unsakini-ng2/src/environments/environment.prod.ts +0 -3
  212. data/spec/dummy/tmp/unsakini-ng2/src/environments/environment.ts +0 -8
  213. data/spec/dummy/tmp/unsakini-ng2/src/favicon.ico +0 -0
  214. data/spec/dummy/tmp/unsakini-ng2/src/index.html +0 -14
  215. data/spec/dummy/tmp/unsakini-ng2/src/main.ts +0 -12
  216. data/spec/dummy/tmp/unsakini-ng2/src/polyfills.ts +0 -19
  217. data/spec/dummy/tmp/unsakini-ng2/src/styles.css +0 -1
  218. data/spec/dummy/tmp/unsakini-ng2/src/test.ts +0 -31
  219. data/spec/dummy/tmp/unsakini-ng2/src/tsconfig.json +0 -18
  220. data/spec/dummy/tmp/unsakini-ng2/src/typings.d.ts +0 -2
  221. data/spec/dummy/tmp/unsakini-ng2/tslint.json +0 -114
  222. data/spec/dummy/tmp/unsakini-ng2/typings.json +0 -4
@@ -0,0 +1,43 @@
1
+ # module Unsakini
2
+ module Unsakini
3
+ class User < ApplicationRecord
4
+
5
+ has_secure_password
6
+
7
+ validates_uniqueness_of :email, case_sensitive: false, on: [:create]
8
+ validates_format_of :email, with: /@/
9
+ validates :name, :email, presence: true
10
+ validates :password, :presence => true,
11
+ :confirmation => true,
12
+ :length => { :minimum => 6 },
13
+ :if => :password # only validate if password changed!
14
+
15
+ has_many :user_boards
16
+ has_many :boards, through: :user_boards
17
+
18
+ before_save :downcase_email
19
+ before_create :generate_confirmation_instructions
20
+
21
+ def downcase_email
22
+ self.email = self.email.delete(' ').downcase
23
+ end
24
+
25
+ def generate_confirmation_instructions
26
+ self.confirmation_token = SecureRandom.hex(10)
27
+ self.confirmation_sent_at = Time.now.utc
28
+ end
29
+
30
+ def confirmation_token_valid?
31
+ (self.confirmation_sent_at + 30.days) > Time.now.utc
32
+ end
33
+
34
+ def mark_as_confirmed!
35
+ self.confirmation_token = nil
36
+ self.confirmed_at = Time.now.utc
37
+ save
38
+ end
39
+
40
+ end
41
+ end
42
+
43
+ # end
@@ -0,0 +1,84 @@
1
+ # UserBoard model, links the user and it's boards
2
+ module Unsakini
3
+ class UserBoard < ApplicationRecord
4
+ include EncryptableModelConcern
5
+
6
+ encryptable_attributes :encrypted_password
7
+
8
+ validates :encrypted_password, :presence => true, if: :is_admin
9
+
10
+ before_validation :validate_before_create, on: :create
11
+ before_validation :validate_before_update, on: :update
12
+
13
+ belongs_to :user
14
+ belongs_to :board
15
+
16
+ scope :admin, -> { where(is_admin: true) }
17
+
18
+ def name=(str)
19
+ @name = str
20
+ end
21
+
22
+ def name
23
+ if !@name.nil?
24
+ @name
25
+ else
26
+ self.board.name
27
+ end
28
+ end
29
+
30
+ # Returns user_boards where {Board} is `is_shared`
31
+ #
32
+ # @param is_shared [Boolean] wether to return shared or not shared boards
33
+ def self.shared(is_shared)
34
+ joins("LEFT JOIN #{Board.table_name} ON #{self.table_name}.board_id = #{Board.table_name}.id")
35
+ .where("#{Board.table_name}.is_shared = ?", is_shared)
36
+ end
37
+
38
+ def share(user_ids, new_key)
39
+ ActiveRecord::Base.transaction do
40
+ user_ids.each do |usr_id|
41
+ UserBoard.new({
42
+ user_id: usr_id,
43
+ board_id: self.board_id,
44
+ encrypted_password: nil,
45
+ is_admin: false
46
+ })
47
+ .save!
48
+ end
49
+ self.board.is_shared = true
50
+ self.encrypted_password = new_key
51
+ self.save!
52
+ end
53
+ true
54
+
55
+ rescue
56
+ self.errors[:base] << "Unable to share the this board"
57
+ false
58
+ end
59
+
60
+ private
61
+
62
+ def reset_user_boards_encrypted_password
63
+ UserBoard.where("board_id = ? AND user_id != ?", self.board_id, self.user_id).update_all(encrypted_password: nil)
64
+ end
65
+
66
+ def validate_before_create
67
+ if self.board.nil?
68
+ b = Board.new(name: @name)
69
+ if b.save
70
+ self.board_id = b.id
71
+ else
72
+ self.errors[:base] << "Board name is invalid"
73
+ end
74
+ end
75
+ end
76
+
77
+ def validate_before_update
78
+ self.board.name = @name if !@name.blank?
79
+ reset_user_boards_encrypted_password if self.encrypted_password_changed?
80
+ self.errors[:base] << "Board name is invalid" if !self.board.save
81
+ end
82
+
83
+ end
84
+ end
@@ -0,0 +1,5 @@
1
+ module Unsakini
2
+ def self.table_name_prefix
3
+ 'unsakini_'
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ module Unsakini
2
+ class BoardSerializer < ActiveModel::Serializer
3
+
4
+ attributes :id, :name, :created_at, :updated_at
5
+
6
+ end
7
+ end
@@ -1,10 +1,13 @@
1
1
  # Serializes the {Comment} model instance to json.
2
2
  # Read more about active model serializers - https://github.com/rails-api/active_model_serializers
3
3
 
4
- class CommentSerializer < ActiveModel::Serializer
4
+ module Unsakini
5
+ class CommentSerializer < ActiveModel::Serializer
5
6
 
6
- attributes :id, :content, :created_at, :updated_at
7
+ attributes :id, :content, :created_at, :updated_at
7
8
 
8
- belongs_to :user
9
+ belongs_to :user
10
+
11
+ end
9
12
 
10
13
  end
@@ -0,0 +1,26 @@
1
+ # Serializes the `Post` model instance to json.
2
+ # Read more about active model serializers - https://github.com/rails-api/active_model_serializers
3
+
4
+ module Unsakini
5
+ class PostSerializer < ActiveModel::Serializer
6
+
7
+ attributes :id, :title, :content, :created_at, :updated_at
8
+
9
+ belongs_to :user
10
+
11
+ belongs_to :board do |serializer|
12
+ user_board = object.board.user_boards.where(user_id: object.user_id).first
13
+
14
+ {
15
+ "id" => object.board.id,
16
+ "name" => object.board.name,
17
+ "is_admin" => user_board.is_admin,
18
+ "encrypted_password" => user_board.encrypted_password,
19
+ "created_at" => object.board.created_at,
20
+ "updated_at" => object.board.updated_at
21
+ }
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,14 @@
1
+ # Serializes the `UserBoard` model instance to json.
2
+ # Read more about active model serializers - https://github.com/rails-api/active_model_serializers
3
+ #
4
+
5
+ module Unsakini
6
+ class UserBoardSerializer < ActiveModel::Serializer
7
+
8
+ attributes :id, :is_admin, :encrypted_password, :created_at, :updated_at
9
+
10
+ belongs_to :board
11
+
12
+ end
13
+
14
+ end
@@ -1,6 +1,9 @@
1
1
  # Serializes the `User` model instance to json.
2
2
  # Read more about active model serializers - https://github.com/rails-api/active_model_serializers
3
3
  #
4
- class UserSerializer < ActiveModel::Serializer
5
- attributes :id, :name, :email, :created_at, :updated_at
4
+ module Unsakini
5
+ class UserSerializer < ActiveModel::Serializer
6
+ attributes :id, :name, :email, :created_at, :updated_at
7
+ end
8
+
6
9
  end
@@ -0,0 +1,3 @@
1
+ <h1>Confirm Your Account</h1>
2
+ Click the link below: <br>
3
+ <a href="<%= @url %>"><%= @url %></a>
@@ -37,12 +37,15 @@
37
37
  <div id="wrapper">
38
38
  <header id="header">
39
39
  <div class="container">
40
- <div class="logo"><a href="#"><img src="images/logo.svg" alt="FORKIO"></a></div>
40
+ <div class="logo"><a href="#">
41
+ <img src="images/unsakini.svg" width="150px" height="40px" alt="Unsakini">
42
+ <!-- UNSAKINI -->
43
+ </a></div>
41
44
  <nav id="nav">
42
45
  <div class="opener-holder">
43
46
  <a href="#" class="nav-opener"><span></span></a>
44
47
  </div>
45
- <a href="/app/signup" class="btn btn-primary rounded visible-md visible-lg">
48
+ <a href="/unsakini/app/signup" class="btn btn-primary rounded visible-md visible-lg">
46
49
  Create Account
47
50
  </a>
48
51
  <div class="nav-drop">
@@ -51,8 +54,8 @@
51
54
  <li><a href="#">Documentation</a></li>
52
55
  <li><a href="#">Blog</a></li>
53
56
  <li class="hidden-xs hidden-sm">|</li>
54
- <li><a href="/app/login">Login</a></li>
55
- <li><a href="/app/signup" class="hidden-md hidden-lg">Create Account</a></li>
57
+ <li><a href="/unsakini/app/login">Login</a></li>
58
+ <li><a href="/unsakini/app/signup" class="hidden-md hidden-lg">Create Account</a></li>
56
59
  </ul>
57
60
  <!-- <div class="drop-holder visible-sm visible-xs">
58
61
  <span>Follow Us</span>
@@ -88,7 +91,7 @@
88
91
  </div>
89
92
  <div class="row">
90
93
  <div class="text-box col-md-offset-1 col-md-10">
91
- <h2>Revolutionary Bulletin Board</h2>
94
+ <h2>Encrypted Bulletin Board</h2>
92
95
  <p>
93
96
  <strong><a href="https://www.unsakini.com">Unsakini</a></strong> is an open source encrypted bulletin board created with the aim of evading global information surveillance and spying, preventing data leaks and promoting information confidentiality and integrity.
94
97
 
@@ -398,7 +401,7 @@
398
401
  <div class="footer-holder">
399
402
  <div class="row">
400
403
  <div class="col-md-4">
401
- <div class="logo"><a href="#"><img src="images/logo.svg" alt="FORKIO"></a></div>
404
+ <div class="logo"><a href="#"><img src="images/unsakini.svg" alt="FORKIO"></a></div>
402
405
  <p>
403
406
  <%= @tagline %>
404
407
  </p>
@@ -407,7 +410,6 @@
407
410
  <h4>Links</h4>
408
411
  <ul>
409
412
  <li><a href="http://www.unsakini.com">Project Website</a></li>
410
- <li><a href="<%= @repository %>">Contribution</a></li>
411
413
  <li><a href="/">Documentation</a></li>
412
414
  </ul>
413
415
  </div>
data/config/routes.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  Rails.application.routes.draw do
2
-
3
- root to: 'web_base#index'
4
2
 
5
- post 'user_token' => 'user_token#create'
3
+ root to: 'unsakini/web#index'
6
4
 
7
- # ng2 html5 pushState routes
8
- get 'app', to: 'web_base#app'
9
- get 'app/*ngroute', to: 'web_base#app'
5
+ namespace :unsakini do
6
+ #knock route
7
+ post 'user_token' => 'user_token#create'
8
+ # ng2 html5 pushState routes
9
+ get 'app', to: 'web#app'
10
+ get 'app/*ngroute', to: 'web#app'
10
11
 
11
- namespace :api do
12
12
  resource :user
13
13
  resources :boards do
14
14
  resources :posts do
@@ -16,9 +16,9 @@ Rails.application.routes.draw do
16
16
  end
17
17
  end
18
18
 
19
- post '/api/share/board/', to: 'share_board#index', as: 'share_board'
20
- get '/api/users/search', to: 'users#search', as: 'user_search'
21
-
19
+ post 'share/board/', to: 'share_board#index', as: 'share_board'
20
+ get 'users/search', to: 'users#search', as: 'user_search'
21
+ get 'user/confirm/:token', to: 'users#confirm', as: 'confirm_account'
22
22
 
23
23
  end
24
24
 
@@ -0,0 +1,10 @@
1
+ class CreateUnsakiniBoards < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :unsakini_boards do |t|
4
+ t.text :name
5
+ t.boolean :is_shared, default: false
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -1,8 +1,9 @@
1
- class CreateUserBoards < ActiveRecord::Migration[5.0]
1
+ class CreateUnsakiniUserBoards < ActiveRecord::Migration[5.0]
2
2
  def change
3
- create_table :user_boards do |t|
3
+ create_table :unsakini_user_boards do |t|
4
4
  t.integer :user_id
5
5
  t.integer :board_id
6
+ t.string :encrypted_password
6
7
  t.boolean :is_admin, :default => false
7
8
 
8
9
  t.timestamps
@@ -1,6 +1,6 @@
1
- class CreatePosts < ActiveRecord::Migration[5.0]
1
+ class CreateUnsakiniPosts < ActiveRecord::Migration[5.0]
2
2
  def change
3
- create_table :posts do |t|
3
+ create_table :unsakini_posts do |t|
4
4
  t.text :title
5
5
  t.text :content
6
6
  t.integer :user_id
@@ -1,6 +1,6 @@
1
- class CreateComments < ActiveRecord::Migration[5.0]
1
+ class CreateUnsakiniComments < ActiveRecord::Migration[5.0]
2
2
  def change
3
- create_table :comments do |t|
3
+ create_table :unsakini_comments do |t|
4
4
  t.text :content
5
5
  t.integer :user_id
6
6
  t.integer :post_id
@@ -0,0 +1,15 @@
1
+ class CreateUnsakiniUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :unsakini_users do |t|
4
+ t.string :name, null: false
5
+ t.string :email, null: false
6
+ t.string :password_digest, null: false
7
+ t.string :confirmation_token
8
+ t.datetime :confirmed_at
9
+ t.datetime :confirmation_sent_at
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ end
15
+ end
@@ -1,7 +1,9 @@
1
1
  class Unsakini::ConfigGenerator < Rails::Generators::Base
2
2
  source_root File.expand_path('../templates', __FILE__)
3
3
 
4
- def copy_initializer_file
4
+ def initialize_config_options
5
5
  copy_file "unsakini.rb", "config/initializers/unsakini.rb"
6
+ environment 'config.action_mailer.delivery_method = :letter_opener', env: 'development'
7
+ environment 'config.action_mailer.default_url_options = { :host => "localhost:3000" }', env: 'development'
6
8
  end
7
9
  end
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Add the needed dependencies to Gemfile. Review your Gemfile after running this command and before you do bundle install.
3
+
4
+ Example:
5
+ rails generate dependencies
@@ -0,0 +1,19 @@
1
+ class Unsakini::DependenciesGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../templates', __FILE__)
3
+
4
+ def add_dependencies_to_host
5
+
6
+ gem 'active_model_serializers'
7
+ gem 'rack-cors'
8
+ gem 'kaminari'
9
+ gem 'api-pagination'
10
+ gem 'knock', git: 'https://github.com/adonespitogo/knock'
11
+
12
+ gem_group :development, :test do
13
+ gem "rb-readline"
14
+ gem "byebug"
15
+ gem 'letter_opener'
16
+ end
17
+
18
+ end
19
+ end
@@ -1,56 +1,25 @@
1
1
  namespace :unsakini do
2
2
 
3
-
4
- desc "Runs `rails generate unsakini:config`"
5
- task :config do
6
- begin
7
- Dir.chdir Rails.root do
8
- system('bin/rails g unsakini:config')
9
- end
10
- rescue Exception => e
11
- puts "
12
-
13
- Please run `bin/rails g unsakini:config` before you proceed.
14
-
15
- "
16
- end
17
- end
18
-
19
- desc "Installs the Angular 2 web client to public/app"
20
- task :ng2 do
21
- begin
22
- Dir.chdir Rails.root do
23
- system("bin/rails g unsakini:angular")
24
- end
25
- rescue Exception => e
26
- puts e.to_s
27
- raise "
28
-
29
- Please clone #{repo_name} and extract angular/dist folder to your projects public/app folder
30
-
31
- "
32
- end
33
- end
34
-
35
3
  desc "One stop command to install unsakini."
36
- task :install => [:config, :ng2] do
4
+ task :install do
37
5
  begin
38
6
  Dir.chdir "#{Rails.root}" do
7
+ system("#{Rails.root}/bin/rails g unsakini:config")
39
8
  system("#{Rails.root}/bin/rake unsakini_engine:install:migrations")
40
9
  system("#{Rails.root}/bin/rake db:migrate")
10
+ system("#{Rails.root}/bin/rails g unsakini:dependencies")
41
11
  end
42
12
  rescue Exception => e
43
13
  puts e.to_s
44
14
  puts \
45
15
  "
46
-
47
16
  An error occured. Please run the following commands in succession:
48
17
 
49
18
  "
50
19
  puts "1.) rails g unsakini:config"
51
- puts "2.) rails g unsakini:angular"
52
- puts "3.) bundle exec rake unsakini_engine:install:migrations"
53
- puts "4.) bundle exec rake db:migrate"
20
+ puts "2.) bundle exec rake unsakini_engine:install:migrations"
21
+ puts "3.) bundle exec rake db:migrate"
22
+ puts "4.) rails g unsakini:dependencies"
54
23
  puts ""
55
24
  end
56
25
  end
@@ -1,3 +1,5 @@
1
+ require "unsakini/version"
2
+
1
3
  module Unsakini
2
4
  class Engine < ::Rails::Engine
3
5
 
@@ -1,3 +1,3 @@
1
1
  module Unsakini
2
- VERSION = '0.0.4.2'
2
+ VERSION = '0.0.4.3'
3
3
  end
@@ -0,0 +1,56 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+ <!-- /*width="912.000000pt" height="179.000000pt"**/ -->
5
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
6
+ viewBox="0 0 912.000000 179.000000"
7
+ preserveAspectRatio="xMidYMid meet">
8
+ <metadata>
9
+ Created by potrace 1.13, written by Peter Selinger 2001-2015
10
+ </metadata>
11
+ <g transform="translate(0.000000,179.000000) scale(0.100000,-0.100000)"
12
+ fill="#000000" stroke="none">
13
+ <path d="M6824 1723 c-25 -5 -98 -70 -109 -98 -35 -88 -21 -163 44 -224 46
14
+ -43 74 -53 136 -50 144 8 224 150 159 280 -38 75 -132 113 -230 92z"/>
15
+ <path d="M8834 1723 c-25 -5 -98 -70 -109 -98 -35 -88 -21 -163 44 -224 46
16
+ -43 74 -53 136 -50 144 8 224 150 159 280 -38 75 -132 113 -230 92z"/>
17
+ <path d="M5440 900 l0 -800 160 0 160 0 0 167 0 167 56 54 57 53 146 -220 146
18
+ -220 192 -1 191 0 -11 25 c-7 14 -15 25 -19 25 -5 0 -8 7 -8 15 0 8 -4 15 -10
19
+ 15 -5 0 -10 7 -10 15 0 8 -4 15 -10 15 -5 0 -10 7 -10 15 0 8 -4 15 -10 15 -5
20
+ 0 -10 7 -10 15 0 8 -4 15 -10 15 -5 0 -10 7 -10 15 0 8 -4 15 -10 15 -5 0 -10
21
+ 7 -10 15 0 8 -4 15 -10 15 -5 0 -10 7 -10 15 0 8 -4 15 -10 15 -5 0 -10 7 -10
22
+ 15 0 8 -4 15 -10 15 -5 0 -10 5 -10 10 0 6 -58 97 -128 203 l-129 192 31 30
23
+ c17 17 83 86 146 154 63 68 147 158 187 199 40 41 70 79 67 84 -3 4 -95 8
24
+ -204 8 -193 0 -199 -1 -214 -22 -29 -42 -331 -358 -342 -358 -2 0 -4 182 -4
25
+ 405 l0 405 -160 0 -160 0 0 -800z"/>
26
+ <path d="M60 1138 c0 -275 4 -489 11 -528 50 -312 272 -509 594 -527 276 -15
27
+ 507 107 613 327 69 141 72 174 72 715 l0 475 -164 0 -165 0 -3 -467 c-4 -452
28
+ -5 -470 -26 -533 -60 -177 -208 -256 -382 -204 -71 21 -148 97 -181 179 l-24
29
+ 60 -3 483 -3 482 -169 0 -170 0 0 -462z"/>
30
+ <path d="M2202 1264 c-66 -17 -104 -36 -169 -85 l-53 -40 0 61 0 60 -165 0
31
+ -165 0 0 -580 0 -580 165 0 164 0 3 378 3 379 30 49 c79 126 271 156 347 53
32
+ 50 -67 51 -80 56 -481 l4 -378 159 0 159 0 0 383 c0 415 -6 470 -55 567 -89
33
+ 175 -293 266 -483 214z"/>
34
+ <path d="M3333 1266 c-131 -30 -244 -114 -292 -216 -35 -75 -36 -192 -2 -263
35
+ 42 -86 147 -154 338 -221 122 -42 159 -60 196 -94 36 -34 37 -80 1 -113 -22
36
+ -21 -37 -24 -110 -28 -119 -5 -246 37 -366 121 -9 7 -19 10 -21 8 -27 -30
37
+ -135 -195 -131 -201 14 -23 161 -102 239 -128 194 -64 337 -67 490 -10 80 30
38
+ 184 131 209 204 39 116 29 229 -27 312 -42 62 -126 107 -325 174 -84 29 -165
39
+ 61 -178 72 -58 45 -51 104 15 131 82 32 207 14 324 -46 34 -18 65 -34 68 -36
40
+ 7 -3 119 192 119 208 0 15 -119 77 -205 105 -99 34 -247 42 -342 21z"/>
41
+ <path d="M4525 1270 c-119 -19 -285 -84 -355 -139 l-25 -20 69 -100 c38 -56
42
+ 70 -101 70 -101 1 0 37 18 80 40 230 115 436 82 453 -73 l5 -45 -198 -4 c-166
43
+ -4 -210 -9 -264 -26 -137 -45 -223 -121 -251 -225 -19 -71 -8 -203 23 -269 69
44
+ -148 245 -240 431 -225 86 7 161 41 227 103 l50 47 0 -67 0 -66 155 0 155 0 0
45
+ 358 c0 394 -9 511 -44 587 -45 98 -131 170 -249 207 -73 23 -241 32 -332 18z
46
+ m295 -718 c0 -65 -34 -129 -88 -167 -41 -28 -50 -30 -135 -30 -80 0 -96 3
47
+ -124 23 -60 42 -68 130 -17 177 37 34 83 43 232 44 l132 1 0 -48z"/>
48
+ <path d="M7887 1261 c-70 -19 -119 -47 -172 -97 l-30 -28 -3 62 -3 62 -159 0
49
+ -160 0 0 -580 0 -580 160 0 160 0 1 338 c2 320 3 367 11 402 7 31 50 106 71
50
+ 123 90 73 230 76 293 5 55 -62 56 -69 55 -484 l-2 -384 171 0 170 0 0 353 c0
51
+ 194 -5 381 -11 417 -17 111 -19 121 -28 138 -5 9 -17 34 -27 55 -17 34 -89
52
+ 115 -126 142 -21 15 -100 52 -133 62 -54 16 -167 13 -238 -6z"/>
53
+ <path d="M6730 680 l0 -580 160 0 160 0 0 580 0 580 -160 0 -160 0 0 -580z"/>
54
+ <path d="M8740 680 l0 -580 160 0 160 0 0 580 0 580 -160 0 -160 0 0 -580z"/>
55
+ </g>
56
+ </svg>