require 'hws_settings' require 'json' require 'p4_error' require 'p4_util' require 'sinatra/base' module Auth # Authentication interface for helix web services class App < Sinatra::Base # This method allows people to generate a host unlocked p4 ticket # # One subtle behavior of p4 login -p, is that it will reuse any token # lying in a p4ticket file. What this means, is that if you sign on, say, # using the p4 command line, this method will end up reusing and returning # that ticket. # # So, make sure you run your web services instance in a clean environment # that you don't do interactive work (like maintenance stuff) under. post '/auth/v1/login' do user = params[:user] password = params[:password] # may be a p4 ticket ticket = nil if HWSSettings.system.ENABLE_HELIX_CLOUD_AUTH # TODO(HelixCloud) else env['p4'] = P4Util.open_from_env(env) p4 = env['p4'] p4.user = user p4.password = password p4.connect ticket = Auth.ticket_from_login(p4) end halt 403 if ticket.nil? if request.env['HTTP_ACCEPT'] =~ /application\/json/ content_type 'application/json' return { ticket: ticket }.to_json else content_type 'text/plain' return ticket end end end end
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 15741 | ptomiak | Branch HWS for my use. | ||
//guest/perforce_software/helix-web-services/main/source/helix_web_services/lib/auth/app.rb | |||||
#1 | 15622 | tjuricek |
Move source code to 'source/' subdirectory of branch. build/ will remain where it is. |
||
//guest/perforce_software/helix-web-services/main/helix_web_services/lib/auth/app.rb | |||||
#5 | 15545 | tjuricek | Place in config and hooks for Helix Cloud authentication. | ||
#4 | 15132 | tjuricek | Provde a basic submit -e mechanism on classic perforce workspaces. | ||
#3 | 15059 | tjuricek | Tested authentication of the core /auth/v1/login method. | ||
#2 | 15032 | tjuricek |
Starting config and doc revisions. System is now broken while revisions underway. Configuration of the p4d connection is now done via a single HWSSettings middleware object injected into the Rack env. The HWSP4Cleanup middleware now cleans up any p4 injected into the Rack env. The Auth::App class now mostly just contains one method to generate a p4 ticket. /auth/v1/login. Added yard documentation for the main project. Yard docs have been reconfigured to dump into build/ directories. This should probably be done with each release. Hm... The top level rake file contains a task, 'all:doc', to update our documentation. This should probably be run for each checkin. Hm... Specs are now using Rack::Test on top of a 'live' p4d. I'd suggest you still use the p4util mechanism, which now dumps to a /tmp folder, so we can safely add P4IGNORE rules back into your local .p4config file. Old 'perforce' application now called 'helix_versioning_engine'. Removing cache data. Helix Sync may be slow. It may also get axed. We'll see. |
||
#1 | 13799 | tjuricek |
Start with branch specs hosting in a new monolithic 'helix web services' project. Converting from a microservice to a monolithic architecture due to resource constraints at getting a deployable system running. Additionally, since it's not expected that people will upgrade often, the major benefit of microservices - being able to add services individually without affecting others - is not really a major benefit. The Ruby SDK will be consolidated into a single 'helix web services client' project. It may end up being distributed via Rubygems. This only runs branch specs at the moment. I want to get a CD pipeline setup for the monolithic server before revising more methods. |