security.createUser('john', 'john')
security.createUser('matt', 'matt')
security.createUser('charles', 'charles')
security.createUser('philip', 'philip')

security.createUser('login_man', 'login_man')
security.assignRole("Login_only", ["login_man"])
security.grant("login", "Login_only")

security.createUser('report_man', 'report_man')
security.assignRole("Report_only", ["report_man"])
security.grant("report#view", "Report_only")

security.createUser('security_man', 'security_man')
security.assignRole("Security_only", ["security_man"])
security.grant("security#edit", "Security_only")

security.createUser('report_security_man', 'report_security_man')
security.assignRole("Report_Security_only", ["report_security_man"])
security.grant("report#view", "Report_Security_only")
security.grant("security#edit", "Report_Security_only")

security.createUser('read_man', 'read_man')
security.assignRole("Cis_reader_only", ["read_man"])
security.grant("read", "Cis_reader_only", ['Applications', 'Environments', 'Configuration', 'Infrastructure'])

security.createUser('repo_edit_man', 'repo_edit_man')
security.assignRole("Cis_editors_only", ["repo_edit_man"])
security.grant("read", "Cis_editors_only", ['Applications', 'Environments', 'Configuration', 'Infrastructure'])
security.grant("repo#edit", "Cis_editors_only", ['Applications', 'Environments', 'Configuration', 'Infrastructure'])

security.createUser('import_remove_man', 'import_remove_man')
security.assignRole("App_removers", ["import_remove_man"])
security.grant("read", "App_removers", ['Applications'])
security.grant("import#remove", "App_removers", ['Applications'])

security.createUser('initial_deploy_man', 'initial_deploy_man')
security.assignRole("Initial_deployers_only", ["initial_deploy_man"])
security.grant("read", "Initial_deployers_only", ['Applications', 'Environments'])
security.grant("deploy#initial", "Initial_deployers_only", ['Environments'])

security.createUser('deploy_upgrade_man', 'deploy_upgrade_man')
security.assignRole("Deploy_Updaters_only", ["deploy_upgrade_man"])
security.grant("read", "Deploy_Updaters_only", ['Applications', 'Environments'])
security.grant("deploy#upgrade", "Deploy_Updaters_only", ['Environments'])

security.createUser('deploy_undeploy_man', 'deploy_undeploy_man')
security.assignRole("Deploy_Undeployers_only", ["deploy_undeploy_man"])
security.grant("read", "Deploy_Undeployers_only", ['Applications', 'Environments'])
security.grant("deploy#undeploy", "Deploy_Undeployers_only", ['Environments'])

security.createUser('task_view_man', 'task_view_man')
security.assignRole('Task_View_Only', ['task_view_man'])
security.grant('task#view', 'Task_View_Only')
security.grant('task#assign', 'Task_View_Only')
security.grant("deploy#initial", "Task_View_Only", ['Environments'])
security.grant("read", "Task_View_Only", ['Applications', 'Environments', 'Infrastructure'])

for i in range(1, 10):
    username = 'charles'+ str(i)
    security.createUser(username, username)
    security.assignRole('test_role'+ str(i), [username])

security.grant("login", "test_role1")

for i in range(11, 30):
    security.assignRole('test_role'+ str(i), ['test_role_principal'+ str(i)])

security.assignRole("Login_only", [
    "login_man", "report_man", "security_man", "report_security_man",
    "read_man", "repo_edit_man", 'initial_deploy_man', 'deploy_undeploy_man',
    'deploy_upgrade_man', 'import_remove_man', 'task_view_man'
])

security.assignRole("developers", ["john", "matt"])
security.assignRole("administrators", ["charles"])
security.assignRole("observer", ["philip", "john"])
security.grant("login", "developers")
security.grant("report#view", "administrators")
security.grant("task#preview_step", "developers")
security.grant('controltask#execute', 'administrators', ['Applications'])
security.grant('import#initial', 'administrators', ['Applications'])
security.grant('repo#edit', 'administrators', ['Applications'])
