Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/invites_controller.rb')
-rw-r--r--app/controllers/invites_controller.rb57
1 files changed, 57 insertions, 0 deletions
diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb
new file mode 100644
index 00000000000..8b1f6eeba1b
--- /dev/null
+++ b/app/controllers/invites_controller.rb
@@ -0,0 +1,57 @@
+class InvitesController < ApplicationController
+ before_filter :member
+
+ respond_to :html
+
+ layout 'navless'
+
+ def show
+
+ end
+
+ def accept
+ if member.accept_invite!(current_user)
+ case member.source
+ when Project
+ project = member.source
+ source = "project #{project.name_with_namespace}"
+ path = namespace_project_path(project.namespace, project)
+ when Group
+ group = member.source
+ source = "group #{group.name}"
+ path = group_path(group)
+ else
+ source = "who knows what"
+ path = dashboard_path
+ end
+
+ redirect_to path, notice: "You have been granted #{member.human_access} access to #{source}."
+ else
+ redirect_to :back, alert: "The invite could not be accepted."
+ end
+ end
+
+ private
+
+ def member
+ return @member if defined?(@member)
+
+ @token = params[:id]
+ if member = Member.find_by_invite_token(@token)
+ @member = member
+ else
+ render_404
+ end
+ end
+
+ def authenticate_user!
+ return if current_user
+
+ notice = "To accept this invitation, sign in"
+ notice << " or create an account" if current_application_settings.signup_enabled?
+ notice << "."
+
+ store_location_for :user, request.fullpath
+ redirect_to new_user_session_path, notice: notice
+ end
+end