wordjelly-auth 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +35 -0
  5. data/app/assets/images/auth/activity.jpg +0 -0
  6. data/app/assets/images/auth/facebook.svg +1 -0
  7. data/app/assets/images/auth/google_oauth2.svg +1 -0
  8. data/app/assets/images/auth/js_pic3.jpg +0 -0
  9. data/app/assets/images/auth/profile.jpg +0 -0
  10. data/app/assets/javascripts/auth/admin_create_users.js +2 -0
  11. data/app/assets/javascripts/auth/application.js +20 -0
  12. data/app/assets/javascripts/auth/auth_dependencies.js +12 -0
  13. data/app/assets/javascripts/auth/auth_modals_and_navbar.js +218 -0
  14. data/app/assets/javascripts/auth/clients.js +2 -0
  15. data/app/assets/javascripts/auth/search.js +2 -0
  16. data/app/assets/javascripts/auth/shopping/discounts.js +2 -0
  17. data/app/assets/javascripts/auth/users/profiles.js +188 -0
  18. data/app/assets/stylesheets/auth/admin_create_users.css +4 -0
  19. data/app/assets/stylesheets/auth/application.scss +14 -0
  20. data/app/assets/stylesheets/auth/auth_default_css.scss +13 -0
  21. data/app/assets/stylesheets/auth/common-styles.scss +579 -0
  22. data/app/assets/stylesheets/auth/overrides.scss +26 -0
  23. data/app/assets/stylesheets/auth/search.css +4 -0
  24. data/app/assets/stylesheets/auth/shopping/discounts.css +4 -0
  25. data/app/assets/stylesheets/auth/users/profiles.scss +40 -0
  26. data/app/assets/stylesheets/scaffold.css +56 -0
  27. data/app/controllers/auth/admin_create_users_controller.rb +89 -0
  28. data/app/controllers/auth/application_controller.rb +97 -0
  29. data/app/controllers/auth/clients_controller.rb +105 -0
  30. data/app/controllers/auth/concerns/activity_controller_concern.rb +32 -0
  31. data/app/controllers/auth/concerns/devise_concern.rb +193 -0
  32. data/app/controllers/auth/concerns/omni_concern.rb +310 -0
  33. data/app/controllers/auth/concerns/otp_concern.rb +251 -0
  34. data/app/controllers/auth/concerns/shopping/cart_controller_concern.rb +105 -0
  35. data/app/controllers/auth/concerns/shopping/cart_item_controller_concern.rb +150 -0
  36. data/app/controllers/auth/concerns/shopping/discount_controller_concern.rb +97 -0
  37. data/app/controllers/auth/concerns/shopping/pay_u_money_controller_concern.rb +38 -0
  38. data/app/controllers/auth/concerns/shopping/payment_controller_concern.rb +101 -0
  39. data/app/controllers/auth/concerns/shopping/product_controller_concern.rb +68 -0
  40. data/app/controllers/auth/concerns/token_concern.rb +187 -0
  41. data/app/controllers/auth/confirmations_controller.rb +3 -0
  42. data/app/controllers/auth/mailgun_controller.rb +8 -0
  43. data/app/controllers/auth/omniauth_callbacks_controller.rb +6 -0
  44. data/app/controllers/auth/passwords_controller.rb +4 -0
  45. data/app/controllers/auth/profiles_controller.rb +156 -0
  46. data/app/controllers/auth/registrations_controller.rb +99 -0
  47. data/app/controllers/auth/search_controller.rb +61 -0
  48. data/app/controllers/auth/sessions_controller.rb +20 -0
  49. data/app/controllers/auth/shopping/cart_items_controller.rb +14 -0
  50. data/app/controllers/auth/shopping/carts_controller.rb +13 -0
  51. data/app/controllers/auth/shopping/discounts_controller.rb +19 -0
  52. data/app/controllers/auth/shopping/payments_controller.rb +13 -0
  53. data/app/controllers/auth/shopping/products_controller.rb +17 -0
  54. data/app/controllers/auth/shopping/shopping_controller.rb +86 -0
  55. data/app/controllers/auth/unlocks_controller.rb +3 -0
  56. data/app/controllers/auth/webhooks_controller.rb +3 -0
  57. data/app/helpers/auth/admin_create_users_helper.rb +2 -0
  58. data/app/helpers/auth/application_helper.rb +136 -0
  59. data/app/helpers/auth/clients_helper.rb +4 -0
  60. data/app/helpers/auth/resource_helper.rb +10 -0
  61. data/app/helpers/auth/search_helper.rb +2 -0
  62. data/app/helpers/auth/shopping/cart_items/cart_items_helper.rb +29 -0
  63. data/app/helpers/auth/shopping/carts/carts_helper.rb +25 -0
  64. data/app/helpers/auth/shopping/discounts/discounts_helper.rb +39 -0
  65. data/app/helpers/auth/shopping/payments/pay_u_money_helper.rb +56 -0
  66. data/app/helpers/auth/shopping/payments/payments_helper.rb +54 -0
  67. data/app/helpers/auth/shopping/products/products_helper.rb +52 -0
  68. data/app/helpers/auth/shopping/shopping_helper.rb +3 -0
  69. data/app/helpers/auth/users/profiles_helper.rb +12 -0
  70. data/app/jobs/otp_job.rb +92 -0
  71. data/app/mailers/application_mailer.rb +4 -0
  72. data/app/mailers/auth/notifier.rb +9 -0
  73. data/app/models/auth/admin_create_user.rb +3 -0
  74. data/app/models/auth/client.rb +52 -0
  75. data/app/models/auth/concerns/activity_concern.rb +112 -0
  76. data/app/models/auth/concerns/chief_model_concern.rb +73 -0
  77. data/app/models/auth/concerns/es_concern.rb +21 -0
  78. data/app/models/auth/concerns/notification_concern.rb +232 -0
  79. data/app/models/auth/concerns/notification_response_concern.rb +71 -0
  80. data/app/models/auth/concerns/owner_concern.rb +81 -0
  81. data/app/models/auth/concerns/shopping/cart_concern.rb +329 -0
  82. data/app/models/auth/concerns/shopping/cart_item_concern.rb +437 -0
  83. data/app/models/auth/concerns/shopping/discount_concern.rb +482 -0
  84. data/app/models/auth/concerns/shopping/discount_flow.txt +11 -0
  85. data/app/models/auth/concerns/shopping/pay_u_money_concern.rb +184 -0
  86. data/app/models/auth/concerns/shopping/payment_concern.rb +613 -0
  87. data/app/models/auth/concerns/shopping/product_concern.rb +102 -0
  88. data/app/models/auth/concerns/sms_otp_concern.rb +68 -0
  89. data/app/models/auth/concerns/user_concern.rb +788 -0
  90. data/app/models/auth/identity.rb +23 -0
  91. data/app/models/auth/shopping/cart.rb +3 -0
  92. data/app/models/auth/shopping/cart_item.rb +6 -0
  93. data/app/models/auth/shopping/cart_item_payment_result.rb +7 -0
  94. data/app/models/auth/shopping/discount.rb +4 -0
  95. data/app/models/auth/shopping/payment.rb +5 -0
  96. data/app/models/auth/shopping/product.rb +5 -0
  97. data/app/models/auth/user.rb +3 -0
  98. data/app/views/auth/admin_create_users/_admin_actions.html.erb +46 -0
  99. data/app/views/auth/admin_create_users/_form.html.erb +19 -0
  100. data/app/views/auth/admin_create_users/edit.html.erb +6 -0
  101. data/app/views/auth/admin_create_users/index.html.erb +25 -0
  102. data/app/views/auth/admin_create_users/new.html.erb +5 -0
  103. data/app/views/auth/admin_create_users/show.html.erb +8 -0
  104. data/app/views/auth/clients/_form.html.erb +41 -0
  105. data/app/views/auth/clients/edit.html.erb +6 -0
  106. data/app/views/auth/clients/index.html.erb +33 -0
  107. data/app/views/auth/clients/new.html.erb +5 -0
  108. data/app/views/auth/clients/show.html.erb +21 -0
  109. data/app/views/auth/confirmations/_enter_otp.html.erb +27 -0
  110. data/app/views/auth/confirmations/_get_otp_status.html.erb +25 -0
  111. data/app/views/auth/confirmations/_new_otp_input.js.erb +11 -0
  112. data/app/views/auth/confirmations/_resend_otp.js.erb +8 -0
  113. data/app/views/auth/confirmations/_resend_sms_otp.html.erb +18 -0
  114. data/app/views/auth/confirmations/_verify_otp.js.erb +64 -0
  115. data/app/views/auth/confirmations/create.js.erb +8 -0
  116. data/app/views/auth/confirmations/enter_otp.html.erb +7 -0
  117. data/app/views/auth/confirmations/get_otp_status.html.erb +3 -0
  118. data/app/views/auth/confirmations/new.html.erb +1 -0
  119. data/app/views/auth/confirmations/new.js.erb +16 -0
  120. data/app/views/auth/confirmations/otp_status_result.html.erb +20 -0
  121. data/app/views/auth/mailer/confirmation_instructions.html.erb +5 -0
  122. data/app/views/auth/mailer/password_change.html.erb +3 -0
  123. data/app/views/auth/mailer/reset_password_instructions.html.erb +8 -0
  124. data/app/views/auth/mailer/unlock_instructions.html.erb +7 -0
  125. data/app/views/auth/modals/_ajax_error_modal.html.erb +3 -0
  126. data/app/views/auth/modals/_ajax_error_modal_content.html.erb +0 -0
  127. data/app/views/auth/modals/_edit_account_content.html.erb +68 -0
  128. data/app/views/auth/modals/_edit_account_success_content.html.erb +5 -0
  129. data/app/views/auth/modals/_error_notification.html.erb +8 -0
  130. data/app/views/auth/modals/_forgot_password_content.html.erb +18 -0
  131. data/app/views/auth/modals/_forgot_password_success_content.html.erb +8 -0
  132. data/app/views/auth/modals/_login_default_content.html.erb +3 -0
  133. data/app/views/auth/modals/_login_forms.html.erb +13 -0
  134. data/app/views/auth/modals/_login_navigation_options.html.erb +12 -0
  135. data/app/views/auth/modals/_new_otp_input.html.erb +28 -0
  136. data/app/views/auth/modals/_oauth_and_submit.html.erb +21 -0
  137. data/app/views/auth/modals/_recaptcha_tags.html.erb +4 -0
  138. data/app/views/auth/modals/_resend_confirmation_content.html.erb +17 -0
  139. data/app/views/auth/modals/_resend_confirmation_success_content.html.erb +8 -0
  140. data/app/views/auth/modals/_resend_otp.html.erb +23 -0
  141. data/app/views/auth/modals/_resource_errors.js.erb +24 -0
  142. data/app/views/auth/modals/_sign_in_inputs.html.erb +10 -0
  143. data/app/views/auth/modals/_sign_in_needed_modal.html.erb +3 -0
  144. data/app/views/auth/modals/_sign_in_success_content.html.erb +5 -0
  145. data/app/views/auth/modals/_sign_up_inputs.html.erb +9 -0
  146. data/app/views/auth/modals/_sign_up_success_content.html.erb +1 -0
  147. data/app/views/auth/modals/_sign_up_success_inactive_content.html.erb +2 -0
  148. data/app/views/auth/modals/_unlock_content.html.erb +17 -0
  149. data/app/views/auth/modals/_verify_otp.html.erb +1 -0
  150. data/app/views/auth/modals/base_modal/_base.html.erb +25 -0
  151. data/app/views/auth/modals/login.js.erb +120 -0
  152. data/app/views/auth/modals/unlock_success_content.html.erb +8 -0
  153. data/app/views/auth/notifier/_email.html.erb +3 -0
  154. data/app/views/auth/notifier/notification.html.erb +2 -0
  155. data/app/views/auth/notifier/notification.text.erb +1 -0
  156. data/app/views/auth/omniauth_callbacks/failure.html.erb +4 -0
  157. data/app/views/auth/passwords/create.js.erb +12 -0
  158. data/app/views/auth/passwords/edit.html.erb +25 -0
  159. data/app/views/auth/passwords/new.html.erb +16 -0
  160. data/app/views/auth/passwords/new.js.erb +19 -0
  161. data/app/views/auth/profiles/_proxy_resource.html.erb +5 -0
  162. data/app/views/auth/profiles/set_proxy_resource.js.erb +1 -0
  163. data/app/views/auth/profiles/show.html.erb +8 -0
  164. data/app/views/auth/registrations/create.js.erb +40 -0
  165. data/app/views/auth/registrations/edit.html.erb +2 -0
  166. data/app/views/auth/registrations/edit.js.erb +5 -0
  167. data/app/views/auth/registrations/new.html.erb +33 -0
  168. data/app/views/auth/registrations/update.js.erb +47 -0
  169. data/app/views/auth/search/_search_bar.html.erb +11 -0
  170. data/app/views/auth/search/_search_result.html.erb +7 -0
  171. data/app/views/auth/search/_search_results.html.erb +4 -0
  172. data/app/views/auth/search/authenticated_user_search.js.erb +45 -0
  173. data/app/views/auth/search/authenticated_user_search.json +7 -0
  174. data/app/views/auth/sessions/create.js.erb +5 -0
  175. data/app/views/auth/sessions/new.html.erb +4 -0
  176. data/app/views/auth/sessions/new.js.erb +20 -0
  177. data/app/views/auth/shared/_devise_error_messages.html.erb +9 -0
  178. data/app/views/auth/shared/_links.html.erb +25 -0
  179. data/app/views/auth/shared/_object_errors.html.erb +12 -0
  180. data/app/views/auth/shared/_proxy_resource.html.erb +18 -0
  181. data/app/views/auth/shopping/cart_items/_form.html.erb +34 -0
  182. data/app/views/auth/shopping/cart_items/_show_cart_items_collection.html.erb +31 -0
  183. data/app/views/auth/shopping/cart_items/create_multiple.html.erb +6 -0
  184. data/app/views/auth/shopping/cart_items/create_multiple.json.erb +9 -0
  185. data/app/views/auth/shopping/cart_items/edit.html.erb +6 -0
  186. data/app/views/auth/shopping/cart_items/index.html.erb +52 -0
  187. data/app/views/auth/shopping/cart_items/new.html.erb +5 -0
  188. data/app/views/auth/shopping/cart_items/show.html.erb +13 -0
  189. data/app/views/auth/shopping/carts/_form.html.erb +35 -0
  190. data/app/views/auth/shopping/carts/_payment_links.html.erb +27 -0
  191. data/app/views/auth/shopping/carts/_remove_cart_item.html.erb +11 -0
  192. data/app/views/auth/shopping/carts/_show_cart_balance_info.html.erb +35 -0
  193. data/app/views/auth/shopping/carts/edit.html.erb +6 -0
  194. data/app/views/auth/shopping/carts/index.html.erb +43 -0
  195. data/app/views/auth/shopping/carts/new.html.erb +5 -0
  196. data/app/views/auth/shopping/carts/show.html.erb +46 -0
  197. data/app/views/auth/shopping/discounts/_form.html.erb +18 -0
  198. data/app/views/auth/shopping/discounts/_form_for_create_multiple_cart_items.html.erb +17 -0
  199. data/app/views/auth/shopping/discounts/_show_pending_discount_request.html.erb +17 -0
  200. data/app/views/auth/shopping/discounts/destroy.html.erb +2 -0
  201. data/app/views/auth/shopping/discounts/edit.html.erb +29 -0
  202. data/app/views/auth/shopping/discounts/index.html.erb +40 -0
  203. data/app/views/auth/shopping/discounts/new.html.erb +1 -0
  204. data/app/views/auth/shopping/discounts/show.html.erb +18 -0
  205. data/app/views/auth/shopping/discounts/update.html.erb +2 -0
  206. data/app/views/auth/shopping/payments/_approve_payment.html.erb +7 -0
  207. data/app/views/auth/shopping/payments/_cash_card_cheque.html.erb +24 -0
  208. data/app/views/auth/shopping/payments/_create_discount_coupon.html.erb +5 -0
  209. data/app/views/auth/shopping/payments/_form.html.erb +19 -0
  210. data/app/views/auth/shopping/payments/_gateway.html.erb +21 -0
  211. data/app/views/auth/shopping/payments/_proceed_to_gateway_or_verify_payment.html.erb +18 -0
  212. data/app/views/auth/shopping/payments/_refresh_payment.html.erb +7 -0
  213. data/app/views/auth/shopping/payments/_refund.html.erb +10 -0
  214. data/app/views/auth/shopping/payments/_show_payment_receipt.html.erb +12 -0
  215. data/app/views/auth/shopping/payments/edit.html.erb +6 -0
  216. data/app/views/auth/shopping/payments/index.html.erb +43 -0
  217. data/app/views/auth/shopping/payments/new.html.erb +13 -0
  218. data/app/views/auth/shopping/payments/show.html.erb +36 -0
  219. data/app/views/auth/shopping/products/_form.html.erb +27 -0
  220. data/app/views/auth/shopping/products/edit.html.erb +6 -0
  221. data/app/views/auth/shopping/products/index.html.erb +48 -0
  222. data/app/views/auth/shopping/products/index.json.erb +7 -0
  223. data/app/views/auth/shopping/products/new.html.erb +5 -0
  224. data/app/views/auth/shopping/products/show.html.erb +12 -0
  225. data/app/views/auth/shopping/products/show.json.erb +1 -0
  226. data/app/views/auth/unlocks/create.js.erb +12 -0
  227. data/app/views/auth/unlocks/new.html.erb +14 -0
  228. data/app/views/auth/unlocks/new.js.erb +17 -0
  229. data/app/views/auth/users/_search_result.html.erb +8 -0
  230. data/app/views/auth/users/profiles/_user_data.html.erb +4 -0
  231. data/app/views/auth/users/profiles/show.html.erb +54 -0
  232. data/app/views/layouts/auth/_modals.html.erb +2 -0
  233. data/app/views/layouts/auth/application.html.erb +17 -0
  234. data/app/views/layouts/auth/navbar/_navbar.html.erb +49 -0
  235. data/app/views/layouts/auth/navbar/_personalization.html.erb +17 -0
  236. data/app/views/layouts/auth/navbar/_progress_spinner.html.erb +11 -0
  237. data/app/views/layouts/mailer.html.erb +5 -0
  238. data/app/views/layouts/mailer.text.erb +1 -0
  239. data/config/initializers/active_model.rb +36 -0
  240. data/config/initializers/devise.rb +623 -0
  241. data/config/initializers/json.rb +10 -0
  242. data/config/initializers/omniauth.rb +447 -0
  243. data/config/initializers/redis.rb +2 -0
  244. data/config/initializers/redis.yml +14 -0
  245. data/config/locales/devise.en.yml +63 -0
  246. data/config/routes.rb +1 -0
  247. data/lib/assets/javascripts/data.js +126 -0
  248. data/lib/assets/javascripts/jquery.calendario.js +394 -0
  249. data/lib/assets/javascripts/jquery.tagcloud.js +92 -0
  250. data/lib/assets/javascripts/leanModal.js +236 -0
  251. data/lib/assets/javascripts/main.js +668 -0
  252. data/lib/assets/javascripts/modernizr.custom.63321.js +4 -0
  253. data/lib/assets/javascripts/payumoney.js +9 -0
  254. data/lib/assets/javascripts/search.js +36 -0
  255. data/lib/assets/javascripts/spinner.js +77 -0
  256. data/lib/assets/javascripts/trianglify.min.js +2 -0
  257. data/lib/assets/javascripts/you_need_to_sign_in.js.erb +478 -0
  258. data/lib/assets/stylesheets/calendar.css +111 -0
  259. data/lib/assets/stylesheets/calendar_modifications.scss +276 -0
  260. data/lib/auth.rb +32 -0
  261. data/lib/auth/custom_failure.rb +3 -0
  262. data/lib/auth/engine.rb +231 -0
  263. data/lib/auth/job_exception_handler.rb +7 -0
  264. data/lib/auth/mailgun.rb +28 -0
  265. data/lib/auth/notify.rb +8 -0
  266. data/lib/auth/omniauth/path.rb +104 -0
  267. data/lib/auth/partials.rb +12 -0
  268. data/lib/auth/rails/routes.rb +169 -0
  269. data/lib/auth/search/main.rb +97 -0
  270. data/lib/auth/sidekiq_up.rb +16 -0
  271. data/lib/auth/two_factor_otp.rb +202 -0
  272. data/lib/auth/url_shortener.rb +29 -0
  273. data/lib/auth/version.rb +3 -0
  274. data/lib/tasks/auth_tasks.rake +4 -0
  275. metadata +863 -0
@@ -0,0 +1,3 @@
1
+ class Auth::ConfirmationsController < Devise::ConfirmationsController
2
+
3
+ end
@@ -0,0 +1,8 @@
1
+ class Auth::MailgunController < ApplicationController
2
+ skip_before_filter :verify_authenticity_token
3
+
4
+ def email_webhook
5
+
6
+ end
7
+
8
+ end
@@ -0,0 +1,6 @@
1
+ class Auth::OmniauthCallbacksController < DeviseController
2
+
3
+ respond_to :json,:html
4
+ include Auth::Concerns::OmniConcern
5
+
6
+ end
@@ -0,0 +1,4 @@
1
+ class Auth::PasswordsController < Devise::PasswordsController
2
+
3
+
4
+ end
@@ -0,0 +1,156 @@
1
+ class Auth::ProfilesController < Auth::ApplicationController
2
+
3
+ CONDITIONS_FOR_TOKEN_AUTH = [:get_user_id,:show,:update,:set_proxy_resource]
4
+
5
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
6
+
7
+ include Auth::Concerns::DeviseConcern
8
+ include Auth::Concerns::TokenConcern
9
+
10
+ before_action :do_before_request, TCONDITIONS
11
+ before_action :initialize_vars, TCONDITIONS
12
+ before_action :is_admin_user, :only => [:set_proxy_user]
13
+
14
+
15
+ def initialize_vars
16
+ @resource_params = {}
17
+ @profile_resource = nil
18
+ @all_params = permitted_params.deep_symbolize_keys
19
+
20
+ if collection = @all_params[:resource]
21
+
22
+ if Auth.configuration.auth_resources[collection.singularize.capitalize]
23
+
24
+ @resource_class = collection.singularize.capitalize.constantize
25
+ @resource_symbol = collection.singularize.to_sym
26
+
27
+ @resource_params = @all_params.fetch(@resource_symbol,{})
28
+
29
+ @profile_resource = @all_params[:id] ? @resource_class.find_resource(@all_params[:id],current_signed_in_resource) : @resource_class.new(@resource_params)
30
+ end
31
+ end
32
+ end
33
+
34
+
35
+ ## this method needs token authentication, or for the user to be authenticated.
36
+ ## this method also needs an :id, hence the profile_resource is returned.
37
+ ## so what if i sign in as one user,and send in the id of another user?, no because we use the find_resource method, which also considers the current_signed_in_Resource.
38
+ def show
39
+ @profile_resource
40
+ end
41
+
42
+
43
+ ## this method needs the token authentication and an :id, hence the profile resource is updated.
44
+ ## expected params hash:
45
+ ##{:resource => "users", :user => {:admin,:request_send_reset_password_link}, :id}
46
+ def update
47
+ check_for_update(@profile_resource)
48
+
49
+ if @resource_params[:admin]
50
+ @profile_resource.admin = @resource_params[:admin]
51
+ end
52
+
53
+ if @resource_params[:created_by_admin]
54
+ @profile_resource.created_by_admin = @resource_params[:created_by_admin]
55
+ end
56
+
57
+ @profile_resource.m_client = self.m_client
58
+
59
+
60
+ respond_to do |format|
61
+ if @profile_resource.save
62
+ flash[:notice] = "Success"
63
+ format.json {head :no_content}
64
+ format.html {redirect_to profile_path({:id => @profile_resource.id.to_s, :resource => @profile_resource.class.name.pluralize.downcase.to_s})}
65
+ else
66
+ flash[:notice] = "Failed"
67
+ format.json {render :json => @profile_resource.errors, :status => :unprocessable_entity}
68
+ format.html {redirect_to profile_path({:id => @profile_resource.id.to_s, :resource => @profile_resource.class.name.pluralize.downcase.to_s})}
69
+ end
70
+ end
71
+ end
72
+
73
+ ## here the idea is to just return the current_signed_in_resource's id.
74
+ ## it doesn't have anything to do with the profiel
75
+ ## since no id is sent into the params, so profile_resource will never be found.
76
+ def get_user_id
77
+ res = current_signed_in_resource
78
+ res.m_client = self.m_client
79
+ respond_with current_signed_in_resource do |format|
80
+ format.json {render json: current_signed_in_resource.as_json({:show_id => true})}
81
+ end
82
+ end
83
+
84
+ ## THIS IS HOW YOU SET A PROXY USER AS AN ADMIN.
85
+ ## this method takes an id.
86
+ ## it also needs current signed in user to be an admin.
87
+ ## it basically takes the @profile_resource
88
+ ## then it shoves it into the session as proxy_resource_id and proxy_resource_class
89
+ ## then it returns the profile_resource.
90
+ ## it responds only to js
91
+ ## it is meant to be used only for setting the proxied user by an admin in the web application.
92
+ ## expect the params to contain
93
+ ## params[:proxy_resource_id] and params[:proxy_resource_class]
94
+ def set_proxy_resource
95
+ not_found("that user doesn't exist") unless @profile_resource
96
+ session[:proxy_resource_id] = @profile_resource.id.to_s
97
+ session[:proxy_resource_class] = @profile_resource.class.name.to_s
98
+ #puts "the session variables set are as follows:"
99
+ #puts session[:proxy_resource_id]
100
+ #puts session[:proxy_resource_class]
101
+ end
102
+
103
+
104
+
105
+
106
+ ##@used_in: email check if already exists.
107
+ ## this method is only usable through web.
108
+ ## not available currently for api use.
109
+ def credential_exists
110
+ filt = permitted_params
111
+ resource = get_model(filt["resource"])
112
+ is_valid = false
113
+ if resource
114
+ conditions = resource.credential_exists(filt)
115
+ is_valid = (resource.or(*conditions).count == 0)
116
+ end
117
+ respond_to do |format|
118
+ format.json { render json: {"is_valid" => is_valid} }
119
+ end
120
+ end
121
+
122
+ private
123
+ def permitted_params
124
+ if action_name.to_s == "credential_exists"
125
+ params.require(:credential).permit(Devise.authentication_keys + [:resource])
126
+ else
127
+ filters = []
128
+ ## this basically enables passing in something like;
129
+ ## to help us to set a user as admin.
130
+ ## provided that the current_signed_in_Resource is an admin.
131
+ ## "user" => {:admin => true}
132
+ ## we also want to allow to set :created_by_admin => true,
133
+ ## so that is also enabled, if the user is an admin,
134
+ Auth.configuration.auth_resources.keys.each do |model|
135
+ if current_signed_in_resource && current_signed_in_resource.is_admin?
136
+ filters << {model.downcase.to_sym => [:admin,:created_by_admin]}
137
+ end
138
+ end
139
+ filters << [:resource,:api_key,:current_app_id,:id]
140
+ params.permit(filters)
141
+ end
142
+ end
143
+
144
+ ##@used_in : profiles_controller
145
+ ##@param[String] resource name : it is expected to end with the model name, preceeded by a slash. eg: authenticate/user
146
+ ##@return[Object] : returns the the klass of the model. eg.: User
147
+ def get_model(resource_name)
148
+ model_name = nil
149
+ resource_name.scan(/\/(?<model_name>[a-z]+)$/) do |jj|
150
+ ll = Regexp.last_match
151
+ model_name = ll[:model_name]
152
+ end
153
+ return unless model_name
154
+ return Object.const_get(model_name.singularize.capitalize)
155
+ end
156
+ end
@@ -0,0 +1,99 @@
1
+ class Auth::RegistrationsController < Devise::RegistrationsController
2
+
3
+ TCONDITIONS = {:only => [:update,:destroy]}
4
+
5
+ include Auth::Concerns::TokenConcern
6
+
7
+ #before_action :check_recaptcha, only: [:create, :update]
8
+
9
+
10
+ def create
11
+ check_recaptcha
12
+ build_resource(sign_up_params)
13
+ resource.m_client = self.m_client
14
+ resource.set_client_authentication
15
+ resource.save
16
+ yield resource if block_given?
17
+ if resource.persisted?
18
+ if resource.active_for_authentication?
19
+ set_flash_message! :notice, :signed_up
20
+ sign_up(resource_name, resource)
21
+ respond_with resource, location: after_sign_up_path_for(resource)
22
+ else
23
+ set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}"
24
+ expire_data_after_sign_in!
25
+ respond_with resource, location: after_inactive_sign_up_path_for(resource)
26
+ end
27
+ else
28
+ clean_up_passwords resource
29
+ set_minimum_password_length
30
+ respond_with resource
31
+ end
32
+
33
+ end
34
+
35
+
36
+
37
+
38
+
39
+ def update
40
+ check_recaptcha
41
+ self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
42
+ prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
43
+ ## added these two lines
44
+ resource.m_client = self.m_client
45
+ resource.set_client_authentication
46
+ ## end.
47
+ resource_updated = update_resource(resource, account_update_params)
48
+ yield resource if block_given?
49
+ if resource_updated
50
+ if is_flashing_format?
51
+ flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
52
+ :update_needs_confirmation : :updated
53
+ set_flash_message :notice, flash_key
54
+ end
55
+ sign_in resource_name, resource, bypass: true
56
+ respond_with resource, location: after_update_path_for(resource)
57
+ else
58
+ clean_up_passwords resource
59
+ respond_with resource
60
+ end
61
+ end
62
+
63
+ ##had to do this, cuz after update, the authentication token changes, and that needs to be communicated back to the client, or they will never be able to update or access the resource again.
64
+ def respond_with(*args)
65
+ if is_json_request?
66
+ if args[0] && args[0].respond_to?(:authentication_token)
67
+ render :json => args[0]
68
+ else
69
+ super(*args)
70
+ end
71
+ else
72
+ super(*args)
73
+ end
74
+ end
75
+
76
+ def respond_with_navigational(*args, &block)
77
+ if is_json_request?
78
+ respond_with(*args)
79
+ else
80
+ respond_with(*args) do |format|
81
+ format.any(*navigational_formats, &block)
82
+ end
83
+ end
84
+ end
85
+
86
+
87
+ ## only required in case of registrations controller, for the update action, and destroy actions, wherein we need to make sure that the resource is authenticated before doing anything.
88
+ ## have overridden the devise method here.
89
+ ## it has nothing to do with the simple_token_authentication being done in other controllers.
90
+ ## this was just done here because we cannot add simple_token_authentication to a devise controller.
91
+ def authenticate_scope!
92
+
93
+
94
+ do_before_request
95
+
96
+ end
97
+
98
+ end
99
+
@@ -0,0 +1,61 @@
1
+ class Auth::SearchController < ApplicationController
2
+
3
+
4
+ CONDITIONS_FOR_TOKEN_AUTH = [:authenticated_user_search]
5
+
6
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
7
+
8
+ include Auth::Concerns::DeviseConcern
9
+ include Auth::Concerns::TokenConcern
10
+
11
+ before_action :do_before_request, TCONDITIONS
12
+
13
+
14
+ ## the intention of this action is :
15
+ ## to search all records as admin.
16
+ ## to search a user's own records if you are user.
17
+ ## to search all public records
18
+
19
+ ## so if the user is an admin, then no resource_id is provided to the search.(basically all records are searched)
20
+ ## if he's not an admin, then the lookup_resource user's id is provided.
21
+
22
+ ## this action assumes that the user is signed_in, will return not authenticated otherwise.
23
+
24
+ ## rendering logic :
25
+ ## @js erb -> renders html erb -> there each result class is detected and the requisite "_search.html.erb" partial is found for that class and rendered.
26
+ ## @json => authenticated_user_search.json is rendered.
27
+ ## @html => currently does not support html request.
28
+ def authenticated_user_search
29
+
30
+ ## m client will be available at this stage.
31
+ ## the problem is that it is hard to pass it forward to the mongoid elasticsearch object.
32
+ ## because while initializing the user it will have to first be set on the user.
33
+ ## is there any other way to achieve this?
34
+ query = permitted_params[:query]
35
+ query[:resource_id] = lookup_resource.id.to_s if !current_signed_in_resource.is_admin?
36
+
37
+ @search_results = Auth::Search::Main.search(query)
38
+
39
+ puts "these are the search results."
40
+ puts @search_results.to_s
41
+
42
+ #dummy_product = Auth.configuration.product_class.constantize.new
43
+ #dummy_product.name = "test product"
44
+ #dummy_product.price = 100.20
45
+ #@search_results = [dummy_product,dummy_product]
46
+ @search_results.each do |res|
47
+ if res.respond_to? :m_client
48
+ res.m_client = self.m_client
49
+ end
50
+ end
51
+ respond_with @search_results
52
+ end
53
+
54
+
55
+
56
+ def permitted_params
57
+ params.permit({query: [:query_string, :size]})
58
+ end
59
+
60
+
61
+ end
@@ -0,0 +1,20 @@
1
+ class Auth::SessionsController < Devise::SessionsController
2
+
3
+
4
+
5
+ def create
6
+ self.resource = warden.authenticate!(auth_options)
7
+ ## added these two lines
8
+ resource.m_client = self.m_client
9
+ resource.set_client_authentication
10
+ ## end.
11
+ set_flash_message!(:notice, :signed_in)
12
+ sign_in(resource_name, resource)
13
+ yield resource if block_given?
14
+ respond_with resource, location: after_sign_in_path_for(resource)
15
+ end
16
+
17
+
18
+
19
+
20
+ end
@@ -0,0 +1,14 @@
1
+ class Auth::Shopping::CartItemsController < Auth::Shopping::ShoppingController
2
+ include Auth::Concerns::Shopping::CartItemControllerConcern
3
+
4
+
5
+ ## only these actions need an authenticated user to be present for them to be executed.
6
+ CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new,:index,:show,:create_multiple]
7
+
8
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
9
+ ##this ensures api access to this controller.
10
+ include Auth::Concerns::DeviseConcern
11
+ include Auth::Concerns::TokenConcern
12
+ before_filter :do_before_request , TCONDITIONS
13
+ before_filter :initialize_vars , TCONDITIONS
14
+ end
@@ -0,0 +1,13 @@
1
+ class Auth::Shopping::CartsController < Auth::Shopping::ShoppingController
2
+ include Auth::Concerns::Shopping::CartControllerConcern
3
+
4
+ ## only these actions need an authenticated user to be present for them to be executed.
5
+ CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new,:index,:show]
6
+
7
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
8
+ ##this ensures api access to this controller.
9
+ include Auth::Concerns::DeviseConcern
10
+ include Auth::Concerns::TokenConcern
11
+ before_filter :do_before_request , TCONDITIONS
12
+ before_filter :initialize_vars , TCONDITIONS
13
+ end
@@ -0,0 +1,19 @@
1
+ class Auth::Shopping::DiscountsController < Auth::Shopping::ShoppingController
2
+
3
+ include Auth::Concerns::Shopping::DiscountControllerConcern
4
+ ## only these actions need an authenticated user to be present for them to be executed.
5
+ ## SHOW IS EXCLUDED SO THAT NON SIGNED IN USERS CAN view any discount/ product bundle.
6
+ CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new,:index]
7
+
8
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
9
+ ##this ensures api access to this controller.
10
+ include Auth::Concerns::DeviseConcern
11
+ include Auth::Concerns::TokenConcern
12
+ before_filter :do_before_request , TCONDITIONS
13
+ before_filter :initialize_vars , TCONDITIONS
14
+
15
+ ## remember to add the before_filter is_admin as well.
16
+
17
+
18
+
19
+ end
@@ -0,0 +1,13 @@
1
+ class Auth::Shopping::PaymentsController < Auth::Shopping::ShoppingController
2
+ include Auth::Concerns::Shopping::PaymentControllerConcern
3
+
4
+ ## only these actions need an authenticated user to be present for them to be executed.
5
+ CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new,:index,:show]
6
+
7
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
8
+ ##this ensures api access to this controller.
9
+ include Auth::Concerns::DeviseConcern
10
+ include Auth::Concerns::TokenConcern
11
+ before_filter :do_before_request , TCONDITIONS
12
+ before_filter :initialize_vars , TCONDITIONS
13
+ end
@@ -0,0 +1,17 @@
1
+ class Auth::Shopping::ProductsController < Auth::Shopping::ShoppingController
2
+
3
+
4
+ include Auth::Concerns::Shopping::ProductControllerConcern
5
+
6
+ ## only these actions need an authenticated user to be present for them to be executed.
7
+ CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new]
8
+
9
+ TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
10
+ ##this ensures api access to this controller.
11
+ include Auth::Concerns::DeviseConcern
12
+ include Auth::Concerns::TokenConcern
13
+ before_filter :do_before_request , TCONDITIONS
14
+ before_filter :initialize_vars , TCONDITIONS
15
+ before_filter :is_admin_user , :only => [:create,:update,:destroy,:edit]
16
+
17
+ end