diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-12-20 01:53:19 +0300 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-12-20 01:56:21 +0300 |
commit | 34295036e2a9ecf18ca5440a5dd6dbb0c7f05643 (patch) | |
tree | a529cbc332882305520c7650cbe860301e12abb8 /app/controllers | |
parent | 921f411a41d92ff6b3fdea2560adbd861d97be57 (diff) |
Improve sources
- Add proper error handling,
- Use flash[:alert] and flash[:notice],
- Use `resource` instead of `resources`,
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/projects/mattermost_controller.rb | 39 | ||||
-rw-r--r-- | app/controllers/projects/mattermosts_controller.rb | 41 |
2 files changed, 41 insertions, 39 deletions
diff --git a/app/controllers/projects/mattermost_controller.rb b/app/controllers/projects/mattermost_controller.rb deleted file mode 100644 index a0eaec262ee..00000000000 --- a/app/controllers/projects/mattermost_controller.rb +++ /dev/null @@ -1,39 +0,0 @@ -class Projects::MattermostController < Projects::ApplicationController - layout 'project_settings' - before_action :authorize_admin_project! - before_action :service - before_action :teams, only: [:new] - - def new - end - - def create - message = @service.configure(current_user, configure_params) - notice = message.is_a?(String) ? message : 'This service is now configured' - - redirect_to( - new_namespace_project_mattermost_path(@project.namespace, @project), - notice: notice - ) - rescue NoSessionError - redirect_to( - new_namespace_project_mattermost_path(@project.namespace, @project), - alert: 'No session could be set up, is Mattermost configured with Single Sign on?' - ) - end - - private - - def configure_params - params.permit(:trigger, :team_id). - merge(url: service_trigger_url(@service), icon_url: asset_url('gitlab_logo.png')) - end - - def service - @service ||= @project.find_or_initialize_service('mattermost_slash_commands') - end - - def teams - @teams = @service.list_teams(current_user) - end -end diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb new file mode 100644 index 00000000000..c6b39add7ad --- /dev/null +++ b/app/controllers/projects/mattermosts_controller.rb @@ -0,0 +1,41 @@ +class Projects::MattermostsController < Projects::ApplicationController + include TriggersHelper + include ActionView::Helpers::AssetUrlHelper + + layout 'project_settings' + + before_action :authorize_admin_project! + before_action :service + before_action :teams, only: [:new] + + def new + end + + def create + @service.configure!(current_user, configure_params) + + flash[:notice] = 'This service is now configured' + redirect_to edit_namespace_project_service_path(@project.namespace, @project, service) + rescue => e + flash[:alert] = e.message + redirect_to new_namespace_project_mattermost_path(@project.namespace, @project) + end + + private + + def configure_params + params.require(:mattermost).permit(:trigger, :team_id).merge( + url: service_trigger_url(@service), + icon_url: asset_url('gitlab_logo.png')) + end + + def teams + @teams ||= @service.list_teams(current_user) + rescue => e + flash[:alert] = e.message + end + + def service + @service ||= @project.find_or_initialize_service('mattermost_slash_commands') + end +end |