22
33module Settings
44 class TeamsController < Settings ::BaseController
5- before_action :set_team , only : [ :show , :destroy ]
6- before_action :require_team_member ! , only : [ :show ]
7- before_action :require_team_admin! , only : [ :destroy ]
8- skip_before_action :require_authentication , only : [ :index ]
5+ before_action :set_team , only : [ :show , :update , : destroy]
6+ before_action :require_team_accessible ! , only : [ :show ]
7+ before_action :require_team_admin! , only : [ :update , : destroy]
8+ skip_before_action :require_authentication , only : [ :index , :show ]
99
1010 def index
1111 @your_teams = user_signed_in? ? current_user . teams . includes ( team_members : :user ) : [ ]
@@ -14,8 +14,9 @@ def index
1414
1515 def show
1616 @team_members = @team . team_members . includes ( :user )
17+ @is_member = user_signed_in? && @team . member? ( current_user )
1718 @can_manage = user_signed_in? && @team . admin? ( current_user )
18- @can_invite = user_signed_in? && @team . admin? ( current_user )
19+ @can_invite = @can_manage
1920 end
2021
2122 def create
@@ -29,6 +30,14 @@ def create
2930 redirect_to settings_teams_path , alert : e . record . errors . full_messages . to_sentence
3031 end
3132
33+ def update
34+ if @team . update ( team_update_params )
35+ redirect_to settings_team_path ( @team ) , notice : "Team settings updated"
36+ else
37+ redirect_to settings_team_path ( @team ) , alert : @team . errors . full_messages . to_sentence
38+ end
39+ end
40+
3241 def destroy
3342 @team . destroy
3443 redirect_to settings_teams_path , notice : "Team deleted"
@@ -48,19 +57,24 @@ def team_params
4857 params . require ( :team ) . permit ( :name )
4958 end
5059
60+ def team_update_params
61+ params . require ( :team ) . permit ( :visibility )
62+ end
63+
5164 def require_team_admin!
5265 unless user_signed_in? && @team . admin? ( current_user )
5366 redirect_to settings_team_path ( @team ) , alert : "Admins only" and return
5467 end
5568 end
5669
57- def require_team_member!
58- unless user_signed_in?
70+ def require_team_accessible!
71+ return if @team . accessible_to? ( current_user )
72+
73+ if user_signed_in?
74+ render_404
75+ else
5976 redirect_to new_session_path , alert : "Please sign in"
60- return
6177 end
62-
63- render_404 unless @team . member? ( current_user )
6478 end
6579 end
6680end
0 commit comments