module MnoEnterprise::Concerns::Controllers::Jpi::V1::TeamsController

Public Instance Methods

add_users() click to toggle source

PUT /mnoe/jpi/v1/teams/:id/add_users

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 60
def add_users
  update_members(:add_user)
end
create() click to toggle source

POST /mnoe/jpi/v1/organizations/:organization_id/teams

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 29
def create
  authorize! :manage_teams, parent_organization
  @team = parent_organization.teams.create(team_params)

  MnoEnterprise::EventLogger.info('team_add', current_user.id, 'Team created', @team) if @team

  render 'show'
end
destroy() click to toggle source

DELETE /mnoe/jpi/v1/teams/:id

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 70
def destroy
  @team = MnoEnterprise::Team.find(params[:id])
  authorize! :manage_teams, @team.organization

  @team.destroy

  MnoEnterprise::EventLogger.info('team_delete', current_user.id, 'Team deleted', @team) if @team

  head :no_content
end
index() click to toggle source
Instance methods
GET /mnoe/jpi/v1/organizations/:organization_id/teams
# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 17
def index
  authorize! :read, parent_organization
  @teams = MnoEnterprise::Team.where(organization_id: params[:organization_id])
end
remove_users() click to toggle source

PUT /mnoe/jpi/v1/teams/:id/remove_users

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 65
def remove_users
  update_members(:remove_user)
end
show() click to toggle source

GET /mnoe/jpi/v1/teams/:id

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 23
def show
  @team = MnoEnterprise::Team.find(params[:id])
  authorize! :read, @team.organization
end
update() click to toggle source

PUT /mnoe/jpi/v1/teams/:id

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 39
def update
  @team = MnoEnterprise::Team.find(params[:id])
  authorize! :manage_teams, @team.organization

  # Update regular attributes
  @team.update_attributes(team_params)

  # # Update permissions
  if params[:team] && params[:team][:app_instances]
    list = params[:team][:app_instances].select { |e| e != {} }
    @team.set_access_to(list)

    MnoEnterprise::EventLogger.info('team_apps_update', current_user.id, 'Team apps updated', @team,
                                    {apps: list.map{|l| l['name']}})

  end

  render 'show'
end

Private Instance Methods

team_params() click to toggle source
# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 103
def team_params
  params.require(:team).permit(:name)
end
update_members(action) click to toggle source

Update the members of a team Reduce duplication between add and remove

# File lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb, line 85
def update_members(action)
  @team = MnoEnterprise::Team.find(params[:id])
  authorize! :manage_teams, @team.organization

  if params[:team] && params[:team][:users]
    id_list = params[:team][:users].map { |h| h[:id] }.compact
    users = @team.organization.users.where('id.in' => id_list)

    users.each { |u| @team.send(action, u) }

    MnoEnterprise::EventLogger.info('team_update', current_user.id, 'Team composition updated', @team,
                                    {action: action.to_s, users:  users.map(&:email)})
  end
  @team.reload

  render 'show'
end