BigW Consortium Gitlab

Commit b9d58c4c by devaroop

getting user keys publically through http without any authentication, the github…

getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys changelog updated to include ssh key retrieval feature update
parent e219cf72
v 6.2.0 v 6.2.0
- Retrieving user ssh keys publically(github style): http://__HOST__/__USERNAME__.keys
- Public projects are visible from the outside - Public projects are visible from the outside
- Add group access to permissions page - Add group access to permissions page
- Require current password to change one - Require current password to change one
......
class Profiles::KeysController < ApplicationController class Profiles::KeysController < ApplicationController
layout "profile" layout "profile"
skip_before_filter :authenticate_user!, only: [:get_keys]
def index def index
@keys = current_user.keys.order('id DESC').all @keys = current_user.keys.order('id DESC').all
...@@ -32,4 +33,21 @@ class Profiles::KeysController < ApplicationController ...@@ -32,4 +33,21 @@ class Profiles::KeysController < ApplicationController
format.js { render nothing: true } format.js { render nothing: true }
end end
end end
#get all keys of a user(params[:username]) in a text format
#helpful for sysadmins to put in respective servers
def get_keys
if params[:username].present?
begin
user = User.find_by_username(params[:username])
user.present? ? (render :text => user.all_ssh_keys) :
(render_404 and return)
rescue => e
render text: e.message
end
else
render_404 and return
end
end
end end
...@@ -391,4 +391,8 @@ class User < ActiveRecord::Base ...@@ -391,4 +391,8 @@ class User < ActiveRecord::Base
self self
end end
def all_ssh_keys
keys.collect{|x| x.key}.join("\n")
end
end end
...@@ -11,6 +11,9 @@ Gitlab::Application.routes.draw do ...@@ -11,6 +11,9 @@ Gitlab::Application.routes.draw do
API::API.logger Rails.logger API::API.logger Rails.logger
mount API::API => '/api' mount API::API => '/api'
#get all keys of user
get ':username.keys' => 'profiles/keys#get_keys' , constraints: { username: /.*/ }
constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? } constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? }
constraints constraint do constraints constraint do
mount Sidekiq::Web, at: "/admin/sidekiq", as: :sidekiq mount Sidekiq::Web, at: "/admin/sidekiq", as: :sidekiq
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment