wordjelly-auth 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +35 -0
- data/app/assets/images/auth/activity.jpg +0 -0
- data/app/assets/images/auth/facebook.svg +1 -0
- data/app/assets/images/auth/google_oauth2.svg +1 -0
- data/app/assets/images/auth/js_pic3.jpg +0 -0
- data/app/assets/images/auth/profile.jpg +0 -0
- data/app/assets/javascripts/auth/admin_create_users.js +2 -0
- data/app/assets/javascripts/auth/application.js +20 -0
- data/app/assets/javascripts/auth/auth_dependencies.js +12 -0
- data/app/assets/javascripts/auth/auth_modals_and_navbar.js +218 -0
- data/app/assets/javascripts/auth/clients.js +2 -0
- data/app/assets/javascripts/auth/search.js +2 -0
- data/app/assets/javascripts/auth/shopping/discounts.js +2 -0
- data/app/assets/javascripts/auth/users/profiles.js +188 -0
- data/app/assets/stylesheets/auth/admin_create_users.css +4 -0
- data/app/assets/stylesheets/auth/application.scss +14 -0
- data/app/assets/stylesheets/auth/auth_default_css.scss +13 -0
- data/app/assets/stylesheets/auth/common-styles.scss +579 -0
- data/app/assets/stylesheets/auth/overrides.scss +26 -0
- data/app/assets/stylesheets/auth/search.css +4 -0
- data/app/assets/stylesheets/auth/shopping/discounts.css +4 -0
- data/app/assets/stylesheets/auth/users/profiles.scss +40 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/auth/admin_create_users_controller.rb +89 -0
- data/app/controllers/auth/application_controller.rb +97 -0
- data/app/controllers/auth/clients_controller.rb +105 -0
- data/app/controllers/auth/concerns/activity_controller_concern.rb +32 -0
- data/app/controllers/auth/concerns/devise_concern.rb +193 -0
- data/app/controllers/auth/concerns/omni_concern.rb +310 -0
- data/app/controllers/auth/concerns/otp_concern.rb +251 -0
- data/app/controllers/auth/concerns/shopping/cart_controller_concern.rb +105 -0
- data/app/controllers/auth/concerns/shopping/cart_item_controller_concern.rb +150 -0
- data/app/controllers/auth/concerns/shopping/discount_controller_concern.rb +97 -0
- data/app/controllers/auth/concerns/shopping/pay_u_money_controller_concern.rb +38 -0
- data/app/controllers/auth/concerns/shopping/payment_controller_concern.rb +101 -0
- data/app/controllers/auth/concerns/shopping/product_controller_concern.rb +68 -0
- data/app/controllers/auth/concerns/token_concern.rb +187 -0
- data/app/controllers/auth/confirmations_controller.rb +3 -0
- data/app/controllers/auth/mailgun_controller.rb +8 -0
- data/app/controllers/auth/omniauth_callbacks_controller.rb +6 -0
- data/app/controllers/auth/passwords_controller.rb +4 -0
- data/app/controllers/auth/profiles_controller.rb +156 -0
- data/app/controllers/auth/registrations_controller.rb +99 -0
- data/app/controllers/auth/search_controller.rb +61 -0
- data/app/controllers/auth/sessions_controller.rb +20 -0
- data/app/controllers/auth/shopping/cart_items_controller.rb +14 -0
- data/app/controllers/auth/shopping/carts_controller.rb +13 -0
- data/app/controllers/auth/shopping/discounts_controller.rb +19 -0
- data/app/controllers/auth/shopping/payments_controller.rb +13 -0
- data/app/controllers/auth/shopping/products_controller.rb +17 -0
- data/app/controllers/auth/shopping/shopping_controller.rb +86 -0
- data/app/controllers/auth/unlocks_controller.rb +3 -0
- data/app/controllers/auth/webhooks_controller.rb +3 -0
- data/app/helpers/auth/admin_create_users_helper.rb +2 -0
- data/app/helpers/auth/application_helper.rb +136 -0
- data/app/helpers/auth/clients_helper.rb +4 -0
- data/app/helpers/auth/resource_helper.rb +10 -0
- data/app/helpers/auth/search_helper.rb +2 -0
- data/app/helpers/auth/shopping/cart_items/cart_items_helper.rb +29 -0
- data/app/helpers/auth/shopping/carts/carts_helper.rb +25 -0
- data/app/helpers/auth/shopping/discounts/discounts_helper.rb +39 -0
- data/app/helpers/auth/shopping/payments/pay_u_money_helper.rb +56 -0
- data/app/helpers/auth/shopping/payments/payments_helper.rb +54 -0
- data/app/helpers/auth/shopping/products/products_helper.rb +52 -0
- data/app/helpers/auth/shopping/shopping_helper.rb +3 -0
- data/app/helpers/auth/users/profiles_helper.rb +12 -0
- data/app/jobs/otp_job.rb +92 -0
- data/app/mailers/application_mailer.rb +4 -0
- data/app/mailers/auth/notifier.rb +9 -0
- data/app/models/auth/admin_create_user.rb +3 -0
- data/app/models/auth/client.rb +52 -0
- data/app/models/auth/concerns/activity_concern.rb +112 -0
- data/app/models/auth/concerns/chief_model_concern.rb +73 -0
- data/app/models/auth/concerns/es_concern.rb +21 -0
- data/app/models/auth/concerns/notification_concern.rb +232 -0
- data/app/models/auth/concerns/notification_response_concern.rb +71 -0
- data/app/models/auth/concerns/owner_concern.rb +81 -0
- data/app/models/auth/concerns/shopping/cart_concern.rb +329 -0
- data/app/models/auth/concerns/shopping/cart_item_concern.rb +437 -0
- data/app/models/auth/concerns/shopping/discount_concern.rb +482 -0
- data/app/models/auth/concerns/shopping/discount_flow.txt +11 -0
- data/app/models/auth/concerns/shopping/pay_u_money_concern.rb +184 -0
- data/app/models/auth/concerns/shopping/payment_concern.rb +613 -0
- data/app/models/auth/concerns/shopping/product_concern.rb +102 -0
- data/app/models/auth/concerns/sms_otp_concern.rb +68 -0
- data/app/models/auth/concerns/user_concern.rb +788 -0
- data/app/models/auth/identity.rb +23 -0
- data/app/models/auth/shopping/cart.rb +3 -0
- data/app/models/auth/shopping/cart_item.rb +6 -0
- data/app/models/auth/shopping/cart_item_payment_result.rb +7 -0
- data/app/models/auth/shopping/discount.rb +4 -0
- data/app/models/auth/shopping/payment.rb +5 -0
- data/app/models/auth/shopping/product.rb +5 -0
- data/app/models/auth/user.rb +3 -0
- data/app/views/auth/admin_create_users/_admin_actions.html.erb +46 -0
- data/app/views/auth/admin_create_users/_form.html.erb +19 -0
- data/app/views/auth/admin_create_users/edit.html.erb +6 -0
- data/app/views/auth/admin_create_users/index.html.erb +25 -0
- data/app/views/auth/admin_create_users/new.html.erb +5 -0
- data/app/views/auth/admin_create_users/show.html.erb +8 -0
- data/app/views/auth/clients/_form.html.erb +41 -0
- data/app/views/auth/clients/edit.html.erb +6 -0
- data/app/views/auth/clients/index.html.erb +33 -0
- data/app/views/auth/clients/new.html.erb +5 -0
- data/app/views/auth/clients/show.html.erb +21 -0
- data/app/views/auth/confirmations/_enter_otp.html.erb +27 -0
- data/app/views/auth/confirmations/_get_otp_status.html.erb +25 -0
- data/app/views/auth/confirmations/_new_otp_input.js.erb +11 -0
- data/app/views/auth/confirmations/_resend_otp.js.erb +8 -0
- data/app/views/auth/confirmations/_resend_sms_otp.html.erb +18 -0
- data/app/views/auth/confirmations/_verify_otp.js.erb +64 -0
- data/app/views/auth/confirmations/create.js.erb +8 -0
- data/app/views/auth/confirmations/enter_otp.html.erb +7 -0
- data/app/views/auth/confirmations/get_otp_status.html.erb +3 -0
- data/app/views/auth/confirmations/new.html.erb +1 -0
- data/app/views/auth/confirmations/new.js.erb +16 -0
- data/app/views/auth/confirmations/otp_status_result.html.erb +20 -0
- data/app/views/auth/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/auth/mailer/password_change.html.erb +3 -0
- data/app/views/auth/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/auth/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/auth/modals/_ajax_error_modal.html.erb +3 -0
- data/app/views/auth/modals/_ajax_error_modal_content.html.erb +0 -0
- data/app/views/auth/modals/_edit_account_content.html.erb +68 -0
- data/app/views/auth/modals/_edit_account_success_content.html.erb +5 -0
- data/app/views/auth/modals/_error_notification.html.erb +8 -0
- data/app/views/auth/modals/_forgot_password_content.html.erb +18 -0
- data/app/views/auth/modals/_forgot_password_success_content.html.erb +8 -0
- data/app/views/auth/modals/_login_default_content.html.erb +3 -0
- data/app/views/auth/modals/_login_forms.html.erb +13 -0
- data/app/views/auth/modals/_login_navigation_options.html.erb +12 -0
- data/app/views/auth/modals/_new_otp_input.html.erb +28 -0
- data/app/views/auth/modals/_oauth_and_submit.html.erb +21 -0
- data/app/views/auth/modals/_recaptcha_tags.html.erb +4 -0
- data/app/views/auth/modals/_resend_confirmation_content.html.erb +17 -0
- data/app/views/auth/modals/_resend_confirmation_success_content.html.erb +8 -0
- data/app/views/auth/modals/_resend_otp.html.erb +23 -0
- data/app/views/auth/modals/_resource_errors.js.erb +24 -0
- data/app/views/auth/modals/_sign_in_inputs.html.erb +10 -0
- data/app/views/auth/modals/_sign_in_needed_modal.html.erb +3 -0
- data/app/views/auth/modals/_sign_in_success_content.html.erb +5 -0
- data/app/views/auth/modals/_sign_up_inputs.html.erb +9 -0
- data/app/views/auth/modals/_sign_up_success_content.html.erb +1 -0
- data/app/views/auth/modals/_sign_up_success_inactive_content.html.erb +2 -0
- data/app/views/auth/modals/_unlock_content.html.erb +17 -0
- data/app/views/auth/modals/_verify_otp.html.erb +1 -0
- data/app/views/auth/modals/base_modal/_base.html.erb +25 -0
- data/app/views/auth/modals/login.js.erb +120 -0
- data/app/views/auth/modals/unlock_success_content.html.erb +8 -0
- data/app/views/auth/notifier/_email.html.erb +3 -0
- data/app/views/auth/notifier/notification.html.erb +2 -0
- data/app/views/auth/notifier/notification.text.erb +1 -0
- data/app/views/auth/omniauth_callbacks/failure.html.erb +4 -0
- data/app/views/auth/passwords/create.js.erb +12 -0
- data/app/views/auth/passwords/edit.html.erb +25 -0
- data/app/views/auth/passwords/new.html.erb +16 -0
- data/app/views/auth/passwords/new.js.erb +19 -0
- data/app/views/auth/profiles/_proxy_resource.html.erb +5 -0
- data/app/views/auth/profiles/set_proxy_resource.js.erb +1 -0
- data/app/views/auth/profiles/show.html.erb +8 -0
- data/app/views/auth/registrations/create.js.erb +40 -0
- data/app/views/auth/registrations/edit.html.erb +2 -0
- data/app/views/auth/registrations/edit.js.erb +5 -0
- data/app/views/auth/registrations/new.html.erb +33 -0
- data/app/views/auth/registrations/update.js.erb +47 -0
- data/app/views/auth/search/_search_bar.html.erb +11 -0
- data/app/views/auth/search/_search_result.html.erb +7 -0
- data/app/views/auth/search/_search_results.html.erb +4 -0
- data/app/views/auth/search/authenticated_user_search.js.erb +45 -0
- data/app/views/auth/search/authenticated_user_search.json +7 -0
- data/app/views/auth/sessions/create.js.erb +5 -0
- data/app/views/auth/sessions/new.html.erb +4 -0
- data/app/views/auth/sessions/new.js.erb +20 -0
- data/app/views/auth/shared/_devise_error_messages.html.erb +9 -0
- data/app/views/auth/shared/_links.html.erb +25 -0
- data/app/views/auth/shared/_object_errors.html.erb +12 -0
- data/app/views/auth/shared/_proxy_resource.html.erb +18 -0
- data/app/views/auth/shopping/cart_items/_form.html.erb +34 -0
- data/app/views/auth/shopping/cart_items/_show_cart_items_collection.html.erb +31 -0
- data/app/views/auth/shopping/cart_items/create_multiple.html.erb +6 -0
- data/app/views/auth/shopping/cart_items/create_multiple.json.erb +9 -0
- data/app/views/auth/shopping/cart_items/edit.html.erb +6 -0
- data/app/views/auth/shopping/cart_items/index.html.erb +52 -0
- data/app/views/auth/shopping/cart_items/new.html.erb +5 -0
- data/app/views/auth/shopping/cart_items/show.html.erb +13 -0
- data/app/views/auth/shopping/carts/_form.html.erb +35 -0
- data/app/views/auth/shopping/carts/_payment_links.html.erb +27 -0
- data/app/views/auth/shopping/carts/_remove_cart_item.html.erb +11 -0
- data/app/views/auth/shopping/carts/_show_cart_balance_info.html.erb +35 -0
- data/app/views/auth/shopping/carts/edit.html.erb +6 -0
- data/app/views/auth/shopping/carts/index.html.erb +43 -0
- data/app/views/auth/shopping/carts/new.html.erb +5 -0
- data/app/views/auth/shopping/carts/show.html.erb +46 -0
- data/app/views/auth/shopping/discounts/_form.html.erb +18 -0
- data/app/views/auth/shopping/discounts/_form_for_create_multiple_cart_items.html.erb +17 -0
- data/app/views/auth/shopping/discounts/_show_pending_discount_request.html.erb +17 -0
- data/app/views/auth/shopping/discounts/destroy.html.erb +2 -0
- data/app/views/auth/shopping/discounts/edit.html.erb +29 -0
- data/app/views/auth/shopping/discounts/index.html.erb +40 -0
- data/app/views/auth/shopping/discounts/new.html.erb +1 -0
- data/app/views/auth/shopping/discounts/show.html.erb +18 -0
- data/app/views/auth/shopping/discounts/update.html.erb +2 -0
- data/app/views/auth/shopping/payments/_approve_payment.html.erb +7 -0
- data/app/views/auth/shopping/payments/_cash_card_cheque.html.erb +24 -0
- data/app/views/auth/shopping/payments/_create_discount_coupon.html.erb +5 -0
- data/app/views/auth/shopping/payments/_form.html.erb +19 -0
- data/app/views/auth/shopping/payments/_gateway.html.erb +21 -0
- data/app/views/auth/shopping/payments/_proceed_to_gateway_or_verify_payment.html.erb +18 -0
- data/app/views/auth/shopping/payments/_refresh_payment.html.erb +7 -0
- data/app/views/auth/shopping/payments/_refund.html.erb +10 -0
- data/app/views/auth/shopping/payments/_show_payment_receipt.html.erb +12 -0
- data/app/views/auth/shopping/payments/edit.html.erb +6 -0
- data/app/views/auth/shopping/payments/index.html.erb +43 -0
- data/app/views/auth/shopping/payments/new.html.erb +13 -0
- data/app/views/auth/shopping/payments/show.html.erb +36 -0
- data/app/views/auth/shopping/products/_form.html.erb +27 -0
- data/app/views/auth/shopping/products/edit.html.erb +6 -0
- data/app/views/auth/shopping/products/index.html.erb +48 -0
- data/app/views/auth/shopping/products/index.json.erb +7 -0
- data/app/views/auth/shopping/products/new.html.erb +5 -0
- data/app/views/auth/shopping/products/show.html.erb +12 -0
- data/app/views/auth/shopping/products/show.json.erb +1 -0
- data/app/views/auth/unlocks/create.js.erb +12 -0
- data/app/views/auth/unlocks/new.html.erb +14 -0
- data/app/views/auth/unlocks/new.js.erb +17 -0
- data/app/views/auth/users/_search_result.html.erb +8 -0
- data/app/views/auth/users/profiles/_user_data.html.erb +4 -0
- data/app/views/auth/users/profiles/show.html.erb +54 -0
- data/app/views/layouts/auth/_modals.html.erb +2 -0
- data/app/views/layouts/auth/application.html.erb +17 -0
- data/app/views/layouts/auth/navbar/_navbar.html.erb +49 -0
- data/app/views/layouts/auth/navbar/_personalization.html.erb +17 -0
- data/app/views/layouts/auth/navbar/_progress_spinner.html.erb +11 -0
- data/app/views/layouts/mailer.html.erb +5 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/config/initializers/active_model.rb +36 -0
- data/config/initializers/devise.rb +623 -0
- data/config/initializers/json.rb +10 -0
- data/config/initializers/omniauth.rb +447 -0
- data/config/initializers/redis.rb +2 -0
- data/config/initializers/redis.yml +14 -0
- data/config/locales/devise.en.yml +63 -0
- data/config/routes.rb +1 -0
- data/lib/assets/javascripts/data.js +126 -0
- data/lib/assets/javascripts/jquery.calendario.js +394 -0
- data/lib/assets/javascripts/jquery.tagcloud.js +92 -0
- data/lib/assets/javascripts/leanModal.js +236 -0
- data/lib/assets/javascripts/main.js +668 -0
- data/lib/assets/javascripts/modernizr.custom.63321.js +4 -0
- data/lib/assets/javascripts/payumoney.js +9 -0
- data/lib/assets/javascripts/search.js +36 -0
- data/lib/assets/javascripts/spinner.js +77 -0
- data/lib/assets/javascripts/trianglify.min.js +2 -0
- data/lib/assets/javascripts/you_need_to_sign_in.js.erb +478 -0
- data/lib/assets/stylesheets/calendar.css +111 -0
- data/lib/assets/stylesheets/calendar_modifications.scss +276 -0
- data/lib/auth.rb +32 -0
- data/lib/auth/custom_failure.rb +3 -0
- data/lib/auth/engine.rb +231 -0
- data/lib/auth/job_exception_handler.rb +7 -0
- data/lib/auth/mailgun.rb +28 -0
- data/lib/auth/notify.rb +8 -0
- data/lib/auth/omniauth/path.rb +104 -0
- data/lib/auth/partials.rb +12 -0
- data/lib/auth/rails/routes.rb +169 -0
- data/lib/auth/search/main.rb +97 -0
- data/lib/auth/sidekiq_up.rb +16 -0
- data/lib/auth/two_factor_otp.rb +202 -0
- data/lib/auth/url_shortener.rb +29 -0
- data/lib/auth/version.rb +3 -0
- data/lib/tasks/auth_tasks.rake +4 -0
- metadata +863 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
module Auth::Shopping::Products::ProductsHelper
|
2
|
+
|
3
|
+
|
4
|
+
## @param[Auth::Shopping::Product] product
|
5
|
+
## @return[Auth::Shopping::CartItem] citem
|
6
|
+
def create_cart_item_from_product(product)
|
7
|
+
citem = Auth.configuration.cart_item_class.constantize.new
|
8
|
+
product.attributes.keys.each do |p_att|
|
9
|
+
if citem.respond_to? p_att.to_sym
|
10
|
+
unless (p_att == "_id" || p_att == "_type" || p_att == "resource_id" || p_att == "resource_class")
|
11
|
+
citem.send("#{p_att}=",product.send("#{p_att}"))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
citem.product_id = product.id.to_s
|
16
|
+
|
17
|
+
citem
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
##########################################################
|
22
|
+
##
|
23
|
+
##
|
24
|
+
## PATH HELPERS.
|
25
|
+
##
|
26
|
+
##
|
27
|
+
##########################################################
|
28
|
+
|
29
|
+
|
30
|
+
## get /new
|
31
|
+
def new_product_path
|
32
|
+
main_app.send(Auth::OmniAuth::Path.new_path(Auth.configuration.product_class))
|
33
|
+
end
|
34
|
+
|
35
|
+
## (PUT/PATCH/GET) - individual product
|
36
|
+
def product_path(product)
|
37
|
+
|
38
|
+
main_app.send(Auth::OmniAuth::Path.show_or_update_or_delete_path(Auth.configuration.product_class),product)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
##/products (GET - all products /CREATE - individual product)
|
43
|
+
def products_path
|
44
|
+
main_app.send(Auth::OmniAuth::Path.create_or_index_path(Auth.configuration.product_class))
|
45
|
+
end
|
46
|
+
|
47
|
+
##/shopping/products/:id/edit
|
48
|
+
def edit_product_path(product)
|
49
|
+
main_app.send(Auth::OmniAuth::Path.edit_path(Auth.configuration.product_class),product)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Auth::Users::ProfilesHelper
|
2
|
+
|
3
|
+
##@used_in: views/users/profiles/_user_data.html.erb
|
4
|
+
##@resource[Object]: a Devise resource
|
5
|
+
##@returns[Hash]: a hash with key: resource, value -> jsonified representation of whatever data you want to store for that resource
|
6
|
+
def user_data(resource)
|
7
|
+
{resource: {:id => resource.id.to_s}}
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
end
|
data/app/jobs/otp_job.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require "/home/bhargav/Github/auth/lib/auth/two_factor_otp"
|
2
|
+
class OtpJob < ActiveJob::Base
|
3
|
+
include Auth::TwoFactorOtp
|
4
|
+
include Auth::Mailgun
|
5
|
+
include Auth::JobExceptionHandler
|
6
|
+
|
7
|
+
queue_as :default
|
8
|
+
#self.queue_adapter = Auth.configuration.queue_adapter.to_sym
|
9
|
+
|
10
|
+
##we currently log all exceptions to redis.
|
11
|
+
rescue_from(StandardError) do |exception|
|
12
|
+
puts exception.message
|
13
|
+
puts exception.backtrace.join("\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
## expected array of arguments is:
|
17
|
+
## 0 => resource class as string
|
18
|
+
## 1 => resource as json serialized, by calling JSON.generate()
|
19
|
+
## 2 => job_type : either "send_sms_otp" or "verify_sms_otp"
|
20
|
+
## 3 => hash of additional arguments if any
|
21
|
+
def perform(args)
|
22
|
+
|
23
|
+
resource_class = args[0]
|
24
|
+
resource_id = args[1]
|
25
|
+
job_type = args[2]
|
26
|
+
params = (args.size == 4) ? JSON.parse(args[3]).deep_symbolize_keys : nil
|
27
|
+
|
28
|
+
|
29
|
+
############### WEBHOOK JOBS ##########################
|
30
|
+
|
31
|
+
if job_type == "sms_webhook"
|
32
|
+
|
33
|
+
sms_webhook(params)
|
34
|
+
|
35
|
+
elsif job_type == "email_webhook"
|
36
|
+
|
37
|
+
email_webhook(params)
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
############### JOBS THAT NEED A RESOURCE #############
|
42
|
+
|
43
|
+
if resource_class && Auth.configuration.auth_resources[resource_class]
|
44
|
+
|
45
|
+
resource_class = resource_class.constantize
|
46
|
+
|
47
|
+
|
48
|
+
resource = resource_class.find(resource_id)
|
49
|
+
|
50
|
+
|
51
|
+
Auth::TwoFactorOtp.resource = resource
|
52
|
+
|
53
|
+
|
54
|
+
if job_type == "send_sms_otp"
|
55
|
+
|
56
|
+
|
57
|
+
auth_gen
|
58
|
+
|
59
|
+
|
60
|
+
elsif job_type == "verify_sms_otp"
|
61
|
+
|
62
|
+
|
63
|
+
verify(params[:otp])
|
64
|
+
|
65
|
+
|
66
|
+
elsif job_type == "send_transactional_sms"
|
67
|
+
|
68
|
+
|
69
|
+
notification = params[:notification_class].capitalize.constantize.find(params[:notification_id])
|
70
|
+
notification.send_sms(resource) do
|
71
|
+
send_transactional_sms(notification.format_for_sms(resource))
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
elsif job_type == "send_email"
|
76
|
+
|
77
|
+
notification = params[:notification_class].capitalize.constantize.find(params[:notification_id])
|
78
|
+
email = Auth.configuration.mailer_class.constantize.notification(resource,self)
|
79
|
+
email = add_webhook_identifier_to_email(email)
|
80
|
+
|
81
|
+
notification.send_email(resource) do
|
82
|
+
JSON.generate(email.message.mailgun_variables)
|
83
|
+
end
|
84
|
+
|
85
|
+
email.deliver_now
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Auth::Notifier < ::ApplicationMailer
|
2
|
+
default from: "from@example.com"
|
3
|
+
## make sure that anything going into this argument implements includes globalid, otherwise serialization and deserialization does not work.
|
4
|
+
def notification(resource,notification)
|
5
|
+
@resource = resource
|
6
|
+
@notification = Auth.configuration.notification_class.constantize.new
|
7
|
+
mail to: "bhargav.r.raut@gmail.com", subject: "#{Time.now}Now with new otp job architecture. #{Auth.configuration.brand_name}"
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Auth
|
2
|
+
class Client
|
3
|
+
include Mongoid::Document
|
4
|
+
include MongoidVersionedAtomic::VAtomic
|
5
|
+
validates :redirect_urls, :url => true, if: :there_are_redirect_urls
|
6
|
+
validates :resource_id, presence: true
|
7
|
+
|
8
|
+
def to_param
|
9
|
+
resource_id
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.find(input)
|
13
|
+
Client.where(:resource_id => input).first
|
14
|
+
end
|
15
|
+
|
16
|
+
field :api_key, type: String
|
17
|
+
field :path, type: String
|
18
|
+
field :redirect_urls, type: Array, default: []
|
19
|
+
field :resource_id, type: BSON::ObjectId, default: BSON::ObjectId.new
|
20
|
+
field :app_ids, type: Array, default: []
|
21
|
+
field :current_app_id, type: String
|
22
|
+
attr_accessor :add_app_id
|
23
|
+
attr_accessor :add_redirect_url
|
24
|
+
|
25
|
+
|
26
|
+
def contains_redirect_url?(url)
|
27
|
+
return self.redirect_urls.include? url
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.find_valid_api_key(api_key)
|
31
|
+
c = self.find(:api_key => api_key)
|
32
|
+
return c
|
33
|
+
end
|
34
|
+
|
35
|
+
##USED IN DEVISE.RB -> SET_CLIENT
|
36
|
+
##USED IN OMNIAUTH.RB -> CHECK_STATE
|
37
|
+
def self.find_valid_api_key_and_app_id(api_key,app_id)
|
38
|
+
c = self.where(:api_key => api_key, :app_ids => app_id).first
|
39
|
+
if c
|
40
|
+
c.current_app_id = app_id
|
41
|
+
end
|
42
|
+
return c
|
43
|
+
end
|
44
|
+
|
45
|
+
def there_are_redirect_urls
|
46
|
+
return self.redirect_urls && self.redirect_urls.size > 0
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
module Auth::Concerns::ActivityConcern
|
2
|
+
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
include Auth::Concerns::ChiefModelConcern
|
5
|
+
included do
|
6
|
+
|
7
|
+
field :user_id, type: BSON::ObjectId
|
8
|
+
field :image_url, type: String
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
|
14
|
+
##the default "from" is the beginning of the current month, and the default "to" is the current time.
|
15
|
+
##@used_in : last_n_months, get_in_range
|
16
|
+
##@param[Hash] query: the "from","to" provided in the query if at all, otherwise nil, assumed that query has two keys : "from", "to", under a key called "range"
|
17
|
+
##@param[Integer] default_from : the default_from for the particular function that is firing this query, it is an epoch
|
18
|
+
##@param[Integer] default_to : the default_to for the particular function that is firing this query, it is an epoch
|
19
|
+
##@return[Hash] : default values for "from", "to"
|
20
|
+
def activities_from_to(query,default_from,default_to)
|
21
|
+
defaults = {"range" => {"from" => default_from, "to" => default_to}}
|
22
|
+
query = defaults.deep_merge(query)
|
23
|
+
##default from and to assigned here.
|
24
|
+
from = query["range"]["from"].to_i
|
25
|
+
to = query["range"]["to"].to_i
|
26
|
+
if from >= to
|
27
|
+
query["range"]["from"] = default_from
|
28
|
+
query["range"]["to"] = default_to
|
29
|
+
end
|
30
|
+
return query
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
##defaults for only.
|
35
|
+
##if it is empty or nil, then it becomes all attributes
|
36
|
+
##otherwise it becomes the intersect of all attributes and the ones specified in the only
|
37
|
+
##created_at had to be added here, because otherwise it throws an error saying missing_attribute in the only. I think this has something to do with the fact that it is used in the query, so it will be included in the result.
|
38
|
+
##@used_in: get_in_range
|
39
|
+
##@param[query] : the provided query, expected to be of the structure:
|
40
|
+
##{"only" => [array],,,other key value pairs}
|
41
|
+
##@return[Hash] query : returns the query with the default values for the fields to be returned
|
42
|
+
def activities_fields(query)
|
43
|
+
defaults = {"only" => Object.const_get(name).fields.keys}
|
44
|
+
query = defaults.deep_merge(query)
|
45
|
+
only = ((Object.const_get(name).fields.keys & query["only"]) + ["created_at"])
|
46
|
+
query["only"] = only
|
47
|
+
return query
|
48
|
+
end
|
49
|
+
|
50
|
+
##@param[Hash] query_params: {"range" : {"from" : unix_epoch_as_string, "to" => unix_epoch_as_string}, "user_id": string, "only": [array_of_attributes_required]}
|
51
|
+
##"range" => optional,if nil or empty, "from" and "to" will be automatically assigned to beginning_of_current_month and current_time respectively
|
52
|
+
##"user_id" => required, will return empty hash if absent.
|
53
|
+
##@return[Hash] agg_hash: the aggregation hash
|
54
|
+
def last_n_months(query_params)
|
55
|
+
return {} unless query_params[:user_id]
|
56
|
+
query_params = Object.const_get(name).activities_from_to(query_params, Time.now.to_i = 12.months, Time.now.to_i)
|
57
|
+
|
58
|
+
agg_hash = Object.const_get(name).collection.aggregate([
|
59
|
+
{
|
60
|
+
"$match" => Object.const_get(name).where(:created_at.gte => query_params["range"]["from"], :created_at.lte => query_params["range"]["to"], :user_id => query_params[:user_id]).selector
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"$project" => {
|
64
|
+
month: {
|
65
|
+
"$month" => "$created_at"
|
66
|
+
}
|
67
|
+
}
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"$group" => {
|
71
|
+
"_id" => {
|
72
|
+
month: "$month"
|
73
|
+
},
|
74
|
+
count: {
|
75
|
+
"$sum" => 1
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}]
|
79
|
+
)
|
80
|
+
|
81
|
+
return agg_hash
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
##@param[Hash] query_params: {"range" : {"from" : unix_epoch_as_string, "to" => unix_epoch_as_string}, "user_id": string, "only": [array_of_attributes_required]}
|
86
|
+
##"range" => optional,if nil or empty, "from" and "to" will be automatically assigned to beginning_of_current_month and current_time respectively
|
87
|
+
##"user_id" => required, will return empty hash if absent.
|
88
|
+
##"only" => optional, will default to all attributes of the activity model.
|
89
|
+
##@return[Hash]: timestamp => activity_object hashified.
|
90
|
+
def get_in_range(query_params)
|
91
|
+
|
92
|
+
## return empty hash if there is no user_id
|
93
|
+
return {} unless query_params[:user_id]
|
94
|
+
query_params = Object.const_get(name).activities_from_to(query_params, Time.now.beginning_of_month.to_i, Time.now.to_i)
|
95
|
+
query_params = Object.const_get(name).activities_fields(query_params)
|
96
|
+
|
97
|
+
##make the mongoid range call here.
|
98
|
+
activities = Object.const_get(name).where(:created_at.gte => query_params["range"]["from"], :created_at.lte => query_params["range"]["to"], :user_id => query_params["user_id"]).only(query_params["only"])
|
99
|
+
|
100
|
+
activities_hash = Hash[activities.entries.map{|c| c.created_at.to_i}.zip(activities.entries.map{|c| c.as_json})]
|
101
|
+
|
102
|
+
puts JSON.pretty_generate(activities_hash)
|
103
|
+
|
104
|
+
return activities_hash
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Auth::Concerns::ChiefModelConcern
|
2
|
+
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
include Mongoid::Document
|
11
|
+
include Mongoid::Timestamps
|
12
|
+
|
13
|
+
## expected to be a hash with names of callbacks and boolean values.
|
14
|
+
## eg: {:before_save => true, :after_save => false..}
|
15
|
+
## used in conjunction with the provided skip_callback?(callback_name) method to determine whether to execute the callbacks or not.
|
16
|
+
## so basically before saving the document, set this attr_accessor on it, and it will allow you to control if callbacks are executed or not.
|
17
|
+
## currently used in the after_save callback where we dont want the refund being set to accepted, and thereafter to update all other refunds as failed to cascade.
|
18
|
+
attr_accessor :skip_callbacks
|
19
|
+
|
20
|
+
|
21
|
+
field :public, type:String, default: "no"
|
22
|
+
|
23
|
+
|
24
|
+
def field_names_to_skip_while_making_form
|
25
|
+
["_id","_type.,","resource_id","resource_class","created_at","updated_at","public"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def publicly_visible_field_names
|
29
|
+
[]
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
## returns a list of attributes of tis model other than those mentioned in #FIELD_NAMES_TO_SKIP_WHILE_MAKING_FORM in this concern.
|
34
|
+
## this is only used in the web api.
|
35
|
+
## @return[Array] array_of_strings : field name.
|
36
|
+
def attributes_to_show
|
37
|
+
self.class.attribute_names.keep_if{|c| !self.field_names_to_skip_while_making_form.include? c.to_s}
|
38
|
+
end
|
39
|
+
|
40
|
+
## @return[Array]
|
41
|
+
def public_attributes_to_show
|
42
|
+
self.publicly_visible_field_names
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
## @param callback_name[String] : the name of the callback which you want to know if is to be skipped
|
48
|
+
## return[Boolean] : true or false.
|
49
|
+
## checks whether the attr_accessor skip_callbacks is set, and if yes, then whether the name of this callback exists in it.
|
50
|
+
## if both above are no, then returns false
|
51
|
+
## if the name exists, then return whatever is stored for the name i.e true or false.
|
52
|
+
## @used_in the after_save and before_save callback blocks, as the first line, basically only executes the block if this method returns false.
|
53
|
+
def skip_callback?(callback_name)
|
54
|
+
return false if (self.skip_callbacks.blank? || self.skip_callbacks[callback_name.to_sym].nil?)
|
55
|
+
return self.skip_callbacks[callback_name.to_sym] == true
|
56
|
+
end
|
57
|
+
|
58
|
+
## will iterate the superclasses of this class
|
59
|
+
## until it finds a class that begins with Auth::
|
60
|
+
## or it hits Object
|
61
|
+
## and then it returns that superclass whatever it is.
|
62
|
+
def walk_superclasses
|
63
|
+
my_super_class = self.class.superclass
|
64
|
+
while my_super_class != Object
|
65
|
+
break if my_super_class.to_s =~ /^Auth::/
|
66
|
+
my_super_class = my_super_class.superclass
|
67
|
+
end
|
68
|
+
return my_super_class
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Auth::Concerns::EsConcern
|
2
|
+
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
def self.create_es_index(definition)
|
8
|
+
definition ||= {}
|
9
|
+
if Auth.configuration.use_es == true
|
10
|
+
include Mongoid::Elasticsearch
|
11
|
+
elasticsearch! (
|
12
|
+
definition
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
end
|