Add admin page for web apps
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									3e9a08a266
								
							
						
					
					
						commit
						2b8bfaaca8
					
				
							
								
								
									
										9
									
								
								app/controllers/admin/app_catalog/web_apps_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/controllers/admin/app_catalog/web_apps_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | class Admin::AppCatalog::WebAppsController < Admin::AppCatalogController | ||||||
|  |   def index | ||||||
|  |     @pagy, @web_apps = pagy(AppCatalog::WebApp.order('created_at desc')) | ||||||
|  | 
 | ||||||
|  |     @stats = { | ||||||
|  |       known_apps: AppCatalog::WebApp.count | ||||||
|  |     } | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										9
									
								
								app/controllers/admin/app_catalog_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/controllers/admin/app_catalog_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | class Admin::AppCatalogController < Admin::BaseController | ||||||
|  |   before_action :set_current_section | ||||||
|  | 
 | ||||||
|  |   private | ||||||
|  | 
 | ||||||
|  |     def set_current_section | ||||||
|  |       @current_section = :app_catalog | ||||||
|  |     end | ||||||
|  | end | ||||||
| @ -23,6 +23,7 @@ class RemoteStorageAuthorization < ApplicationRecord | |||||||
|   after_destroy  :remove_token_expiry_job |   after_destroy  :remove_token_expiry_job | ||||||
| 
 | 
 | ||||||
|   def url |   def url | ||||||
|  |     # TODO use web app scope in addition to host | ||||||
|     uri = URI.parse self.redirect_uri |     uri = URI.parse self.redirect_uri | ||||||
|     "#{uri.scheme}://#{client_id}" |     "#{uri.scheme}://#{client_id}" | ||||||
|   end |   end | ||||||
|  | |||||||
							
								
								
									
										52
									
								
								app/views/admin/app_catalog/web_apps/index.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								app/views/admin/app_catalog/web_apps/index.html.erb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | |||||||
|  | <%= render HeaderComponent.new(title: "App Catalog") %> | ||||||
|  | 
 | ||||||
|  | <%= render MainWithSidenavComponent.new(sidenav_partial: 'shared/admin_sidenav_app_catalog') do %> | ||||||
|  |   <section> | ||||||
|  |     <%= render QuickstatsContainerComponent.new do %> | ||||||
|  |       <%= render QuickstatsItemComponent.new( | ||||||
|  |           type: :number, | ||||||
|  |           title: 'Known Web Apps', | ||||||
|  |           value: @stats[:known_apps], | ||||||
|  |       ) %> | ||||||
|  |       <%# <%= render QuickstatsItemComponent.new( | ||||||
|  |       <%#     type: :number, | ||||||
|  |       <%#     title: 'Accepted', | ||||||
|  |       <%#     value: @stats[:accepted], | ||||||
|  |       <%# ) %> | ||||||
|  |       <%# <%= render QuickstatsItemComponent.new( | ||||||
|  |       <%#     type: :number, | ||||||
|  |       <%#     title: 'Users with referrals', | ||||||
|  |       <%#     value: @stats[:users_with_referrals], | ||||||
|  |       <%#     meta: "/ #{User.count}" | ||||||
|  |       <%# ) %> | ||||||
|  |     <% end %> | ||||||
|  |   </section> | ||||||
|  |   <% if @web_apps.any? %> | ||||||
|  |     <section> | ||||||
|  |       <h3>Web Apps</h3> | ||||||
|  |       <table class="divided mb-8"> | ||||||
|  |         <thead> | ||||||
|  |           <tr> | ||||||
|  |             <th>Name</th> | ||||||
|  |             <th>URL</th> | ||||||
|  |             <th class="hidden md:table-cell">RS Auths</th> | ||||||
|  |             <th class="hidden md:table-cell">Created at</th> | ||||||
|  |           </tr> | ||||||
|  |         </thead> | ||||||
|  |         <tbody> | ||||||
|  |           <% @web_apps.each do |web_app| %> | ||||||
|  |             <tr> | ||||||
|  |               <td><%= web_app.name %></td> | ||||||
|  |               <td><%= link_to web_app.url, web_app.url, | ||||||
|  |                               target: "_blank", rel: "nofollow noopener", | ||||||
|  |                               class: "ks-text-link" %></td> | ||||||
|  |               <td class="hidden md:table-cell"><%= web_app.remote_storage_authorizations.count %></td> | ||||||
|  |               <td class="hidden md:table-cell"><%= web_app.created_at %></td> | ||||||
|  |             </tr> | ||||||
|  |           <% end %> | ||||||
|  |         </tbody> | ||||||
|  |       </table> | ||||||
|  |       <%== pagy_nav @pagy %> | ||||||
|  |     </section> | ||||||
|  |   <% end %> | ||||||
|  | <% end %> | ||||||
| @ -1 +1 @@ | |||||||
| <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-globe"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg> | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-globe <%= custom_class %>"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg> | ||||||
|  | |||||||
| Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 430 B | 
| @ -1 +1 @@ | |||||||
| <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-star"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg> | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-star <%= custom_class %>"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg> | ||||||
|  | |||||||
| Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 360 B | 
| @ -10,5 +10,9 @@ | |||||||
|   <%= link_to "Lightning", admin_lightning_path, |   <%= link_to "Lightning", admin_lightning_path, | ||||||
|         class: main_nav_class(@current_section, :lightning) %> |         class: main_nav_class(@current_section, :lightning) %> | ||||||
| <% end %> | <% end %> | ||||||
|  | <% if Setting.remotestorage_enabled? %> | ||||||
|  |   <%= link_to "Apps", admin_app_catalog_web_apps_path, | ||||||
|  |         class: main_nav_class(@current_section, :app_catalog) %> | ||||||
|  | <% end %> | ||||||
| <%= link_to "Settings", admin_settings_registrations_path, | <%= link_to "Settings", admin_settings_registrations_path, | ||||||
|       class: main_nav_class(@current_section, :settings) %> |       class: main_nav_class(@current_section, :settings) %> | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								app/views/shared/_admin_sidenav_app_catalog.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/views/shared/_admin_sidenav_app_catalog.html.erb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | <%= render SidenavLinkComponent.new( | ||||||
|  |   name: "Web Apps", path: admin_app_catalog_web_apps_path, icon: "globe", | ||||||
|  |   active: current_page?(admin_app_catalog_web_apps_path) | ||||||
|  | ) %> | ||||||
|  | <%= render SidenavLinkComponent.new( | ||||||
|  |   name: "Recommended Apps", path: "#", icon: "star", disabled: true | ||||||
|  | ) %> | ||||||
|  | <%= render SidenavLinkComponent.new( | ||||||
|  |   name: "OAuth Apps", path: "#", icon: "key", disabled: true | ||||||
|  | ) %> | ||||||
| @ -60,11 +60,16 @@ Rails.application.routes.draw do | |||||||
| 
 | 
 | ||||||
|   namespace :admin do |   namespace :admin do | ||||||
|     root to: 'dashboard#index' |     root to: 'dashboard#index' | ||||||
|  | 
 | ||||||
|     resources 'users', param: 'address', only: ['index', 'show'], constraints: { address: /.*/ } |     resources 'users', param: 'address', only: ['index', 'show'], constraints: { address: /.*/ } | ||||||
|     get 'invitations', to: 'invitations#index' |     get 'invitations', to: 'invitations#index' | ||||||
|     resources :donations |     resources :donations | ||||||
|     get 'lightning', to: 'lightning#index' |     get 'lightning', to: 'lightning#index' | ||||||
| 
 | 
 | ||||||
|  |     namespace :app_catalog do | ||||||
|  |       resources 'web_apps', only: ['index'] | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|     namespace :settings do |     namespace :settings do | ||||||
|       resources 'registrations', only: ['index', 'create'] |       resources 'registrations', only: ['index', 'create'] | ||||||
|       resources 'services', only: ['index', 'create'] |       resources 'services', only: ['index', 'create'] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user