mno-enterprise-api 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +1 -0
- data/Rakefile +12 -0
- data/app/assets/javascripts/mno_enterprise/angular/loading-page.app.js.coffee +156 -0
- data/app/assets/javascripts/mno_enterprise/application.js +13 -0
- data/app/controllers/devise/password_expired_controller.rb +55 -0
- data/app/controllers/mno_enterprise/auth/confirmations_controller.rb +5 -0
- data/app/controllers/mno_enterprise/auth/omniauth_callbacks_controller.rb +30 -0
- data/app/controllers/mno_enterprise/auth/passwords_controller.rb +5 -0
- data/app/controllers/mno_enterprise/auth/registrations_controller.rb +5 -0
- data/app/controllers/mno_enterprise/auth/sessions_controller.rb +7 -0
- data/app/controllers/mno_enterprise/auth/unlocks_controller.rb +5 -0
- data/app/controllers/mno_enterprise/deletion_requests_controller.rb +5 -0
- data/app/controllers/mno_enterprise/impersonate_controller.rb +48 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/audit_events_controller.rb +16 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/base_resource_controller.rb +5 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/cloud_apps_controller.rb +46 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/invoices_controller.rb +47 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/organizations_controller.rb +27 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/tenant_invoices_controller.rb +14 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/users_controller.rb +63 -0
- data/app/controllers/mno_enterprise/jpi/v1/app_instances_controller.rb +24 -0
- data/app/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller.rb +36 -0
- data/app/controllers/mno_enterprise/jpi/v1/base_resource_controller.rb +32 -0
- data/app/controllers/mno_enterprise/jpi/v1/current_users_controller.rb +5 -0
- data/app/controllers/mno_enterprise/jpi/v1/deletion_requests_controller.rb +5 -0
- data/app/controllers/mno_enterprise/jpi/v1/impac/dashboards_controller.rb +5 -0
- data/app/controllers/mno_enterprise/jpi/v1/impac/kpis_controller.rb +80 -0
- data/app/controllers/mno_enterprise/jpi/v1/impac/widgets_controller.rb +63 -0
- data/app/controllers/mno_enterprise/jpi/v1/industry_bundle_controller.rb +25 -0
- data/app/controllers/mno_enterprise/jpi/v1/marketplace_controller.rb +22 -0
- data/app/controllers/mno_enterprise/jpi/v1/organizations_controller.rb +5 -0
- data/app/controllers/mno_enterprise/jpi/v1/shopping_cart_controller.rb +93 -0
- data/app/controllers/mno_enterprise/jpi/v1/teams_controller.rb +88 -0
- data/app/controllers/mno_enterprise/org_invites_controller.rb +5 -0
- data/app/controllers/mno_enterprise/pages_controller.rb +5 -0
- data/app/controllers/mno_enterprise/provision_controller.rb +5 -0
- data/app/controllers/mno_enterprise/status_controller.rb +27 -0
- data/app/controllers/mno_enterprise/webhook/o_auth_controller.rb +5 -0
- data/app/mailers/mno_enterprise/system_notification_mailer.rb +5 -0
- data/app/models/mno_enterprise/health_check.rb +16 -0
- data/app/views/devise/password_expired/show.html.haml +32 -0
- data/app/views/mno_enterprise/auth/confirmations/default/_form.html.haml +49 -0
- data/app/views/mno_enterprise/auth/confirmations/default/_lounge.html.haml +34 -0
- data/app/views/mno_enterprise/auth/confirmations/default/_show.html.haml +10 -0
- data/app/views/mno_enterprise/auth/confirmations/lounge.html.haml +4 -0
- data/app/views/mno_enterprise/auth/confirmations/material/_form.html.haml +44 -0
- data/app/views/mno_enterprise/auth/confirmations/material/_lounge.html.haml +18 -0
- data/app/views/mno_enterprise/auth/confirmations/material/_show.html.haml +21 -0
- data/app/views/mno_enterprise/auth/confirmations/new.html.haml +31 -0
- data/app/views/mno_enterprise/auth/confirmations/show.html.haml +4 -0
- data/app/views/mno_enterprise/auth/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/mno_enterprise/auth/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/mno_enterprise/auth/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/mno_enterprise/auth/passwords/edit.html.haml +53 -0
- data/app/views/mno_enterprise/auth/passwords/new.html.haml +34 -0
- data/app/views/mno_enterprise/auth/registrations/default/_form.html.haml +35 -0
- data/app/views/mno_enterprise/auth/registrations/default/_new.html.haml +11 -0
- data/app/views/mno_enterprise/auth/registrations/material/_form.html.haml +30 -0
- data/app/views/mno_enterprise/auth/registrations/material/_new.html.haml +10 -0
- data/app/views/mno_enterprise/auth/registrations/new.html.haml +4 -0
- data/app/views/mno_enterprise/auth/sessions/default/_form.html.haml +17 -0
- data/app/views/mno_enterprise/auth/sessions/default/_new.html.haml +11 -0
- data/app/views/mno_enterprise/auth/sessions/material/_form.html.haml +26 -0
- data/app/views/mno_enterprise/auth/sessions/material/_new.html.haml +11 -0
- data/app/views/mno_enterprise/auth/sessions/new.html.haml +4 -0
- data/app/views/mno_enterprise/auth/shared/_links.html.haml +24 -0
- data/app/views/mno_enterprise/auth/unlocks/new.html.haml +10 -0
- data/app/views/mno_enterprise/deletion_requests/show.html.haml +131 -0
- data/app/views/mno_enterprise/jpi/v1/admin/audit_events/_audit_event.json.jbuilder +5 -0
- data/app/views/mno_enterprise/jpi/v1/admin/audit_events/index.json.jbuilder +4 -0
- data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/_cloud_app.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/invoices/_invoice.json.jbuilder +2 -0
- data/app/views/mno_enterprise/jpi/v1/admin/invoices/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/invoices/show.json.jbuilder +2 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/_credit_card.json.jbuilder +7 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/_invoices.json.jbuilder +8 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/_member.json.jbuilder +14 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/_organization.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/in_arrears.json.jbuilder +8 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/index.json.jbuilder +7 -0
- data/app/views/mno_enterprise/jpi/v1/admin/organizations/show.json.jbuilder +11 -0
- data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/_tenant_invoice.json.jbuilder +5 -0
- data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/users/_user.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/users/index.json.jbuilder +2 -0
- data/app/views/mno_enterprise/jpi/v1/admin/users/show.json.jbuilder +9 -0
- data/app/views/mno_enterprise/jpi/v1/app_instances/_resource.json.jbuilder +23 -0
- data/app/views/mno_enterprise/jpi/v1/app_instances/index.json.jbuilder +9 -0
- data/app/views/mno_enterprise/jpi/v1/app_instances/show.json.jbuilder +3 -0
- data/app/views/mno_enterprise/jpi/v1/billing/index.json.jbuilder +0 -0
- data/app/views/mno_enterprise/jpi/v1/current_users/show.json.jbuilder +37 -0
- data/app/views/mno_enterprise/jpi/v1/impac/dashboards/_dashboard.json.jbuilder +9 -0
- data/app/views/mno_enterprise/jpi/v1/impac/dashboards/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/dashboards/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/kpis/_kpi.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/kpis/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/widgets/_widget.json.jbuilder +6 -0
- data/app/views/mno_enterprise/jpi/v1/impac/widgets/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/marketplace/_app.json.jbuilder +14 -0
- data/app/views/mno_enterprise/jpi/v1/marketplace/index.json.jbuilder +3 -0
- data/app/views/mno_enterprise/jpi/v1/marketplace/show.json.jbuilder +3 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_arrears.json.jbuilder +11 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_billing.json.jbuilder +4 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_credit_card.json.jbuilder +7 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_current_user.json.jbuilder +5 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_invoices.json.jbuilder +8 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_member.json.jbuilder +13 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/_organization.json.jbuilder +13 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/credit_card.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/members.json.jbuilder +3 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/show.json.jbuilder +15 -0
- data/app/views/mno_enterprise/jpi/v1/organizations/show_reduced.json.jbuilder +3 -0
- data/app/views/mno_enterprise/jpi/v1/shopping_cart/organizations.json.jbuilder +5 -0
- data/app/views/mno_enterprise/jpi/v1/shopping_cart/show.json.jbuilder +59 -0
- data/app/views/mno_enterprise/jpi/v1/shopping_cart/show_item.json.jbuilder +34 -0
- data/app/views/mno_enterprise/jpi/v1/teams/_team.json.jbuilder +20 -0
- data/app/views/mno_enterprise/jpi/v1/teams/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/teams/show.json.jbuilder +3 -0
- data/app/views/mno_enterprise/pages/app_access_unauthorized.html.haml +19 -0
- data/app/views/mno_enterprise/pages/app_logout.html.haml +18 -0
- data/app/views/mno_enterprise/pages/billing_details_required.html.haml +19 -0
- data/app/views/mno_enterprise/pages/loading.html.erb +69 -0
- data/app/views/mno_enterprise/provision/_provision_apps.html.haml +42 -0
- data/app/views/mno_enterprise/provision/_select_organization.html.haml +17 -0
- data/app/views/mno_enterprise/provision/new.html.haml +4 -0
- data/app/views/mno_enterprise/webhook/o_auth/authorize.html.haml +26 -0
- data/app/views/mno_enterprise/webhook/o_auth/providers/myob.html.haml +29 -0
- data/app/views/mno_enterprise/webhook/o_auth/providers/xero.html.haml +34 -0
- data/config/initializers/devise.rb +273 -0
- data/config/initializers/devise_extension.rb +9 -0
- data/config/initializers/devise_log.rb +12 -0
- data/config/initializers/health_check.rb +35 -0
- data/config/initializers/main_app_version.rb +6 -0
- data/config/routes.rb +152 -0
- data/lib/mno-enterprise-api.rb +1 -0
- data/lib/mno_enterprise/api.rb +14 -0
- data/lib/mno_enterprise/api/engine.rb +9 -0
- data/lib/mno_enterprise/concerns/controllers/deletion_requests_controller.rb +108 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/admin/base_resource_controller.rb +34 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/current_users_controller.rb +58 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/deletion_requests_controller.rb +69 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/dashboards_controller.rb +76 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/organizations_controller.rb +180 -0
- data/lib/mno_enterprise/concerns/controllers/org_invites_controller.rb +44 -0
- data/lib/mno_enterprise/concerns/controllers/pages_controller.rb +78 -0
- data/lib/mno_enterprise/concerns/controllers/provision_controller.rb +71 -0
- data/lib/mno_enterprise/concerns/controllers/webhook/o_auth_controller.rb +107 -0
- data/lib/mno_enterprise/concerns/mailers/system_notification_mailer.rb +158 -0
- data/lib/mno_enterprise/event_logger.rb +32 -0
- data/spec/controllers/mno_enterprise/auth/confirmation_controller_spec.rb +68 -0
- data/spec/controllers/mno_enterprise/deletion_requests_controller_spec.rb +141 -0
- data/spec/controllers/mno_enterprise/impersonate_controller_spec.rb +48 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/audit_events_controller_spec.rb +51 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/cloud_apps_controller_spec.rb +92 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/invoices_controller_spec.rb +159 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/organizations_controller_spec.rb +116 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/tenant_invoices_controller_spec.rb +92 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/users_controller_spec.rb +136 -0
- data/spec/controllers/mno_enterprise/jpi/v1/app_instances_controller_spec.rb +76 -0
- data/spec/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller_spec.rb +94 -0
- data/spec/controllers/mno_enterprise/jpi/v1/current_users_controller_spec.rb +128 -0
- data/spec/controllers/mno_enterprise/jpi/v1/deletion_requests_controller_spec.rb +72 -0
- data/spec/controllers/mno_enterprise/jpi/v1/impac/kpis_controller_spec.rb +80 -0
- data/spec/controllers/mno_enterprise/jpi/v1/marketplace_controller_spec.rb +115 -0
- data/spec/controllers/mno_enterprise/jpi/v1/organizations_controller_spec.rb +516 -0
- data/spec/controllers/mno_enterprise/jpi/v1/team_controller_spec.rb +86 -0
- data/spec/controllers/mno_enterprise/org_invites_controller_spec.rb +29 -0
- data/spec/controllers/mno_enterprise/pages_controller_spec.rb +49 -0
- data/spec/controllers/mno_enterprise/provision_controller_spec.rb +94 -0
- data/spec/controllers/mno_enterprise/status_controller_spec.rb +34 -0
- data/spec/controllers/mno_enterprise/webhook/o_auth_controller_spec.rb +104 -0
- data/spec/lib/mno_enterprise/event_logger_spec.rb +28 -0
- data/spec/mailer/mno_enterprise/system_notification_mailer_spec.rb +132 -0
- data/spec/rails_helper.rb +94 -0
- data/spec/requests/devise/authentication_spec.rb +43 -0
- data/spec/requests/devise/registration_spec.rb +64 -0
- data/spec/routing/devise/confirmation_routing_spec.rb +20 -0
- data/spec/routing/devise/passwords_routing_spec.rb +24 -0
- data/spec/routing/devise/registrations_routing_spec.rb +16 -0
- data/spec/routing/devise/sessions_routing_spec.rb +20 -0
- data/spec/routing/mno_enterprise/deletion_requests_controller_routing_spec.rb +20 -0
- data/spec/routing/mno_enterprise/impersonate_controller_routing.spec.rb +15 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/audit_events_controller_routing_spec.rb +11 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/cloud_apps_controller_routing_spec.rb +24 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/invoices_controller_routing_spec.rb +37 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/organizations_controller_routing_spec.rb +20 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/tenant_invoices_controller_routing_spec.rb +16 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/users_controller_routing_spec.rb +24 -0
- data/spec/routing/mno_enterprise/jpi/v1/app_instances_controller_routing_spec.rb +12 -0
- data/spec/routing/mno_enterprise/jpi/v1/app_instances_sync_controller_routing_spec.rb +15 -0
- data/spec/routing/mno_enterprise/jpi/v1/current_users_controller_routing_spec.rb +28 -0
- data/spec/routing/mno_enterprise/jpi/v1/deletion_requests_controller_routing_spec.rb +24 -0
- data/spec/routing/mno_enterprise/jpi/v1/impac/kpis_controller_routing_spec.rb +22 -0
- data/spec/routing/mno_enterprise/jpi/v1/marketplace_controller_routing_spec.rb +16 -0
- data/spec/routing/mno_enterprise/jpi/v1/organizations_controller_routing_spec.rb +44 -0
- data/spec/routing/mno_enterprise/jpi/v1/teams_controller_routing_spec.rb +36 -0
- data/spec/routing/mno_enterprise/org_invites_controller_routing_spec.rb +12 -0
- data/spec/routing/mno_enterprise/pages_controller_routing_spec.rb +29 -0
- data/spec/routing/mno_enterprise/provision_controller_routing_spec.rb +15 -0
- data/spec/routing/mno_enterprise/status_controller_routing_spec.rb +19 -0
- data/spec/routing/mno_enterprise/webhook/o_auth_controller_routing_spec.rb +27 -0
- data/spec/spec_helper.rb +88 -0
- metadata +402 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Admin::InvoicesController < Jpi::V1::Admin::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/admin/invoices
|
5
|
+
def index
|
6
|
+
@invoices = MnoEnterprise::Invoice.all
|
7
|
+
end
|
8
|
+
|
9
|
+
# GET /mnoe/jpi/v1/admin/invoices/1
|
10
|
+
def show
|
11
|
+
@invoice = MnoEnterprise::Invoice.find(params[:id])
|
12
|
+
end
|
13
|
+
|
14
|
+
# GET /mnoe/jpi/v1/admin/invoices/current_billing_amount
|
15
|
+
def current_billing_amount
|
16
|
+
data = Rails.cache.fetch('tenant_admin/current_billing_amount', expires_in: ADMIN_CACHE_DURATION) do
|
17
|
+
billing = MnoEnterprise::Organization.all.map(&:current_billing).sum(Money.new(0))
|
18
|
+
{current_billing_amount: {amount: billing.amount, currency: billing.currency_as_string}}
|
19
|
+
end
|
20
|
+
render json: data
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET /mnoe/jpi/v1/admin/invoices/last_invoicing_amount
|
24
|
+
def last_invoicing_amount
|
25
|
+
tenant_billing = MnoEnterprise::Tenant.get('tenant').last_customers_invoicing_amount
|
26
|
+
render json: {last_invoicing_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /mnoe/jpi/v1/admin/invoices/outstanding_amount
|
30
|
+
def outstanding_amount
|
31
|
+
tenant_billing = MnoEnterprise::Tenant.get('tenant').last_customers_outstanding_amount
|
32
|
+
render json: {outstanding_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
|
33
|
+
end
|
34
|
+
|
35
|
+
# GET /mnoe/jpi/v1/admin/invoices/last_portfolio_amount
|
36
|
+
def last_portfolio_amount
|
37
|
+
tenant_billing = MnoEnterprise::Tenant.get('tenant').last_portfolio_amount
|
38
|
+
render json: {last_portfolio_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
|
39
|
+
end
|
40
|
+
|
41
|
+
# GET /mnoe/jpi/v1/admin/invoices/last_commission_amount
|
42
|
+
def last_commission_amount
|
43
|
+
tenant_billing = MnoEnterprise::Tenant.get('tenant').last_commission_amount
|
44
|
+
render json: {last_commission_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Admin::OrganizationsController < Jpi::V1::Admin::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/admin/organizations
|
5
|
+
def index
|
6
|
+
@organizations = MnoEnterprise::Organization
|
7
|
+
@organizations = @organizations.limit(params[:limit]) if params[:limit]
|
8
|
+
@organizations = @organizations.skip(params[:offset]) if params[:offset]
|
9
|
+
@organizations = @organizations.order_by(params[:order_by]) if params[:order_by]
|
10
|
+
@organizations = @organizations.where(params[:where]) if params[:where]
|
11
|
+
@organizations = @organizations.all
|
12
|
+
|
13
|
+
response.headers['X-Total-Count'] = @organizations.metadata[:pagination][:count]
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /mnoe/jpi/v1/admin/organizations/1
|
17
|
+
def show
|
18
|
+
@organization = MnoEnterprise::Organization.find(params[:id])
|
19
|
+
@organization_active_apps = @organization.app_instances.select { |app| app.status == "running" }
|
20
|
+
end
|
21
|
+
|
22
|
+
# GET /mnoe/jpi/v1/admin/organizations/in_arrears
|
23
|
+
def in_arrears
|
24
|
+
@arrears = MnoEnterprise::ArrearsSituation.all
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Admin::TenantInvoicesController < Jpi::V1::Admin::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/admin/tenant_invoices
|
5
|
+
def index
|
6
|
+
@tenant_invoices = MnoEnterprise::TenantInvoice.all
|
7
|
+
end
|
8
|
+
|
9
|
+
# GET /mnoe/jpi/v1/admin/tenant_invoices/1
|
10
|
+
def show
|
11
|
+
@tenant_invoice = MnoEnterprise::TenantInvoice.find(params[:id])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Admin::UsersController < Jpi::V1::Admin::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/admin/users
|
5
|
+
def index
|
6
|
+
@users = MnoEnterprise::User
|
7
|
+
@users = @users.limit(params[:limit]) if params[:limit]
|
8
|
+
@users = @users.skip(params[:offset]) if params[:offset]
|
9
|
+
@users = @users.order_by(params[:order_by]) if params[:order_by]
|
10
|
+
@users = @users.where(params[:where]) if params[:where]
|
11
|
+
@users = @users.all
|
12
|
+
|
13
|
+
response.headers['X-Total-Count'] = @users.metadata[:pagination][:count]
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /mnoe/jpi/v1/admin/users/1
|
17
|
+
def show
|
18
|
+
@user = MnoEnterprise::User.find(params[:id])
|
19
|
+
@user_organizations = @user.organizations
|
20
|
+
end
|
21
|
+
|
22
|
+
# POST /mnoe/jpi/v1/admin/users
|
23
|
+
def create
|
24
|
+
@user = MnoEnterprise::User.build(user_create_params)
|
25
|
+
@user.admin_role = params[:user][:admin_role].presence
|
26
|
+
|
27
|
+
if @user.save
|
28
|
+
render :show
|
29
|
+
else
|
30
|
+
render json: @user.errors, status: :bad_request
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# PATCH /mnoe/jpi/v1/admin/users/:id
|
35
|
+
def update
|
36
|
+
@user = MnoEnterprise::User.find(params[:id])
|
37
|
+
@user.update(user_params)
|
38
|
+
|
39
|
+
render :show
|
40
|
+
end
|
41
|
+
|
42
|
+
# DELETE /mnoe/jpi/v1/admin/users/1
|
43
|
+
def destroy
|
44
|
+
user = MnoEnterprise::User.find(params[:id])
|
45
|
+
user.destroy
|
46
|
+
|
47
|
+
head :no_content
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def user_params
|
53
|
+
params.require(:user).permit(:admin_role)
|
54
|
+
end
|
55
|
+
|
56
|
+
def user_create_params
|
57
|
+
params.require(:user).permit(:name, :surname, :email, :phone).merge(
|
58
|
+
password: 'Password1',
|
59
|
+
confirmed_at: Time.zone.now
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::AppInstancesController < Jpi::V1::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/organization/1/apps.json?timestamp=151452452345
|
5
|
+
def index
|
6
|
+
@app_instances = parent_organization.app_instances.select do |i|
|
7
|
+
i.active? && i.updated_at > Time.at(timestamp) && can?(:access,i)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# DELETE /mnoe/jpi/v1/app_instances/1
|
12
|
+
def destroy
|
13
|
+
app_instance = MnoEnterprise::AppInstance.find(params[:id])
|
14
|
+
|
15
|
+
if app_instance
|
16
|
+
authorize! :manage_app_instances, app_instance.owner
|
17
|
+
MnoEnterprise::EventLogger.info('app_destroy', current_user.id, "App destroyed", app_instance.name,app_instance)
|
18
|
+
app_instance.terminate
|
19
|
+
end
|
20
|
+
|
21
|
+
head :accepted
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::AppInstancesSyncController < Jpi::V1::BaseResourceController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/organization/org-fbba/app_instances_sync
|
5
|
+
def index
|
6
|
+
authorize! :check_apps_sync, @parent_organization
|
7
|
+
# find method is overriden in the mnoe interface to call organization.check_sync_apps_progress
|
8
|
+
connectors = @parent_organization.app_instances_sync.find('anything').connectors
|
9
|
+
render json: results(connectors)
|
10
|
+
end
|
11
|
+
|
12
|
+
# POST /mnoe/jpi/v1/organizations/org-fbba/app_instances_sync
|
13
|
+
def create
|
14
|
+
authorize! :sync_apps, @parent_organization
|
15
|
+
|
16
|
+
# Some weird behaviour with Her and has_one. If app_instances_sync.find is called somewhere before the create,
|
17
|
+
# Her won't detect the organization_id as dirty and won't submit it.
|
18
|
+
sync = @parent_organization.app_instances_sync.build(mode: params[:mode])
|
19
|
+
sync.organization_id_will_change!
|
20
|
+
sync.save
|
21
|
+
|
22
|
+
connectors = sync.connectors
|
23
|
+
|
24
|
+
render json: results(connectors)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def results(connectors)
|
29
|
+
{
|
30
|
+
connectors: connectors,
|
31
|
+
is_syncing: connectors.any?{|c| c[:status]=="RUNNING" }
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::BaseResourceController < ApplicationController
|
3
|
+
before_filter :check_authorization
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def timestamp
|
8
|
+
@timestamp ||= (params[:timestamp] || 0).to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
def parent_organization
|
12
|
+
@parent_organization ||= current_user.organizations.to_a.find do |o|
|
13
|
+
key = (params[:organization_id].to_i == 0) ? o.uid : o.id.to_s
|
14
|
+
key == params[:organization_id].to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Check current user is logged in
|
19
|
+
# Check organization is valid if specified
|
20
|
+
def check_authorization
|
21
|
+
unless current_user
|
22
|
+
render nothing: true, status: :unauthorized
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
if params[:organization_id] && !parent_organization
|
26
|
+
render nothing: true, status: :forbidden
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Impac::KpisController < Jpi::V1::BaseResourceController
|
3
|
+
respond_to :json
|
4
|
+
|
5
|
+
# POST /jpi/v1/impac/dashboards/:dashboard_id/kpis
|
6
|
+
def create
|
7
|
+
whitelist = %w(name endpoint source element_watched targets metadata extra_params)
|
8
|
+
attrs = (params[:kpi] || {}).select { |k,v| whitelist.include?(k.to_s) }
|
9
|
+
|
10
|
+
if dashboard
|
11
|
+
authorize! :manage_impac, dashboard
|
12
|
+
|
13
|
+
# TODO: Her will perform a request there which could be avoided
|
14
|
+
@kpi = dashboard.kpis.create(attrs)
|
15
|
+
if @kpi
|
16
|
+
render 'show'
|
17
|
+
else
|
18
|
+
render json: @kpi.errors, status: :bad_request
|
19
|
+
end
|
20
|
+
else
|
21
|
+
render json: { errors: "Dashboard id #{params[:dashboard_id]} doesn't exist" }, status: :not_found
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# PUT /jpi/v1/impac/kpis/:id
|
26
|
+
def update
|
27
|
+
whitelist = %w(name element_watched targets extra_params)
|
28
|
+
attrs = (params[:kpi] || {}).select { |k,v| whitelist.include?(k.to_s) }.symbolize_keys
|
29
|
+
|
30
|
+
# Find kpi and assign
|
31
|
+
# Will call GET kpi route on Maestrano
|
32
|
+
@kpi = Impac::Kpi.find(params[:id])
|
33
|
+
authorize! :manage_impac, @kpi.dashboard
|
34
|
+
if @kpi
|
35
|
+
# metadata will be merged instead of replaced
|
36
|
+
p = HashWithIndifferentAccess.new(params[:kpi])
|
37
|
+
if p[:metadata] && p[:metadata].is_a?(Hash)
|
38
|
+
attrs[:metadata] = @kpi.settings.merge(p[:metadata])
|
39
|
+
end
|
40
|
+
|
41
|
+
if @kpi.update(attrs)
|
42
|
+
render 'show'
|
43
|
+
else
|
44
|
+
render json: @kpi.errors, status: :bad_request
|
45
|
+
end
|
46
|
+
else
|
47
|
+
render json: { errors: "Kpi id #{params[:id]} doesn't exist" }, status: :not_found
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# DELETE /jpi/v1/impac/kpis/:id
|
52
|
+
def destroy
|
53
|
+
# Will call GET kpi route on Maestrano
|
54
|
+
@kpi = MnoEnterprise::Impac::Kpi.find(params[:id])
|
55
|
+
|
56
|
+
if @kpi
|
57
|
+
authorize! :manage_impac, @kpi.dashboard
|
58
|
+
if @kpi.destroy
|
59
|
+
head status: :ok
|
60
|
+
else
|
61
|
+
render json: { errors: 'Unable to delete this widget' }, status: :bad_request
|
62
|
+
end
|
63
|
+
else
|
64
|
+
render json: {errors: "Kpi id #{params[:id]} doesn't exist" }, status: :not_found
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
#=================================================
|
70
|
+
# Private methods
|
71
|
+
#=================================================
|
72
|
+
private
|
73
|
+
|
74
|
+
def dashboard
|
75
|
+
return false unless params[:dashboard_id]
|
76
|
+
@dashboard ||= MnoEnterprise::Impac::Dashboard.find(params[:dashboard_id])
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Impac::WidgetsController < Jpi::V1::BaseResourceController
|
3
|
+
respond_to :json
|
4
|
+
|
5
|
+
# POST /mnoe/jpi/v1/impac/dashboards/:id/widgets
|
6
|
+
# -> POST /api/mnoe/v1/dashboards/:id/widgets
|
7
|
+
def create
|
8
|
+
if widgets
|
9
|
+
if @widget = widgets.create(format_attrs(['widget_category','metadata']))
|
10
|
+
MnoEnterprise::EventLogger.info('widget_create', current_user.id, 'Widget Creation', nil, @widget)
|
11
|
+
@nocontent = true # no data fetch from Connec!
|
12
|
+
render 'show'
|
13
|
+
else
|
14
|
+
render json: @widget.errors, status: :bad_request
|
15
|
+
end
|
16
|
+
else
|
17
|
+
render json: { errors: "Dashboard id #{params[:id]} doesn't exist" }, status: :not_found
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# PUT /mnoe/jpi/v1/impac/widgets/:id
|
22
|
+
def update
|
23
|
+
if widget.update(format_attrs(['name','metadata']))
|
24
|
+
@nocontent = !params['metadata']
|
25
|
+
render 'show'
|
26
|
+
else
|
27
|
+
render json: @widget.errors, status: :bad_request
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# DELETE /mnoe/jpi/v1/impac/dashboards/1
|
32
|
+
def destroy
|
33
|
+
if widget.destroy
|
34
|
+
MnoEnterprise::EventLogger.info('widget_delete', current_user.id, 'Widget Deletion', nil, widget)
|
35
|
+
head status: :ok
|
36
|
+
else
|
37
|
+
render json: 'Unable to destroy widget', status: :bad_request
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
#=================================================
|
43
|
+
# Private methods
|
44
|
+
#=================================================
|
45
|
+
private
|
46
|
+
|
47
|
+
def widget
|
48
|
+
@widget ||= MnoEnterprise::Impac::Widget.find(params[:id])
|
49
|
+
end
|
50
|
+
|
51
|
+
def widgets
|
52
|
+
@widgets ||= MnoEnterprise::Impac::Dashboard.find(params[:dashboard_id]).widgets
|
53
|
+
end
|
54
|
+
|
55
|
+
def format_attrs(whitelist)
|
56
|
+
attrs = (params[:widget] || {}).select { |k,v| whitelist.include?(k.to_s) }
|
57
|
+
attrs['settings'] = widget ? widget.settings || {} : {}
|
58
|
+
attrs['settings'].merge!(attrs['metadata']) if attrs['metadata']
|
59
|
+
attrs.except!('metadata')
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::IndustryBundleController < ApplicationController
|
3
|
+
|
4
|
+
# GET /mnoe/jpi/v1/industry_bundles/app_descriptions/pr.json
|
5
|
+
# def app_descriptions
|
6
|
+
# @bundle = IndustryBundle.find_by_name(params[:bundle_name])
|
7
|
+
# if @bundle
|
8
|
+
# app_descriptions_array = @bundle.apps.map do |app|
|
9
|
+
# [app.name, { 'pictures' => app.pictures.map { |picture| {'thumb' => picture.thumb.to_s, 'url' => picture.url.to_s } } }.merge(
|
10
|
+
# @bundle.app_descriptions[app.name]) ]
|
11
|
+
# end
|
12
|
+
# @app_descriptions = Hash[*(app_descriptions_array.flatten)]
|
13
|
+
# @bundle_description = { appNames: @bundle.apps.map { |app| app.name }, appDescriptions: @app_descriptions }
|
14
|
+
# respond_to do |format|
|
15
|
+
# format.json { render json: @bundle_description, status: :ok }
|
16
|
+
# end
|
17
|
+
# else
|
18
|
+
# respond_to do |format|
|
19
|
+
# format.json { render json: "That bundle does not exist", status: :bad_request }
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|