def permission(user_id): menu = 'user' submenu = 'users' context = 'permission' title_page = 'Parametre - Utilisateurs' user = Users.objects.get(id=user_id) # liste des roles lie a l'utiliasteur en cours attrib = UserRole.objects( user_id = user.id ) attrib_list = [role.role_id.id for role in attrib] # liste des roles lie a l'utiliasteur en cours avec le droit d'edition edit = UserRole.objects(Q(user_id=user.id) & Q(edit=True)) edit_list = [role.role_id.id for role in edit] # liste des roles lie a l'utiliasteur en cours avec le droit de suppression delete = UserRole.objects(Q(user_id=user.id) & Q(deleted=True)) delete_list = [role.role_id.id for role in delete] liste_role = [] data_role = Roles.objects( valeur__ne='super_admin' ) for role in data_role: if not role.parent: module = {} module['titre'] = role.titre module['id'] = role.id enfants = Roles.objects( parent = role.id ) module['role'] = [] for enfant in enfants: rol = {} rol['id'] = enfant.id rol['titre'] = enfant.titre rol['action'] = enfant.action module['role'].append(rol) liste_role.append(module) # liste des profils de l'application list_profil = Profil.objects( active=True ) profil_select = None if request.args.get('profil') and request.method == 'GET': profil_select = int(request.args.get('profil')) profil_request = Profil.objects.get(id=request.args.get('profil')) attrib = ProfilRole.objects( profil_id= profil_request.id ) attrib_list = [role.role_id.id for role in attrib] # liste des roles lie a l'utiliasteur en cours avec le droit d'edition edit = ProfilRole.objects(Q(profil_id=profil_request) & Q(edit=True)) edit_list = [role.role_id.id for role in edit] # liste des roles lie a l'utiliasteur en cours avec le droit de suppression delete = ProfilRole.objects(Q(profil_id=profil_request.id) & Q(deleted=True)) delete_list = [role.role_id.id for role in delete] if request.method == 'POST' and current_user.has_roles([('super_admin', 'user_permission')], ['edit']): form_attrib = request.form.getlist('attrib') # if not form_attrib and attrib_list: # flash('Les utilisateurs ne doivent pas exister sans permission dans l\'application', 'warning') # return redirect(url_for('user_param.permission', user_id=user_id)) # elif form_attrib: # user.is_enabled = True # user.put() form_edit = request.form.getlist('edit') form_delete = request.form.getlist('delete') # liste des roles lie au profil et supprimer ce qui ne sont plus attribue current_profil_role = UserRole.objects( user_id = user.id ) for current in current_profil_role: if current.role_id.id not in form_attrib: current.delete() # Insertion des roles et authorisation en provenance du formulaire for attrib in form_attrib: role_form = Roles.objects.get(id=attrib) profil_role_exist = UserRole.objects(Q(role_id=role_form.id) & Q(user_id=user.id)).first() if profil_role_exist: if attrib in form_edit: profil_role_exist.edit = True else: profil_role_exist.edit = False if attrib in form_delete: profil_role_exist.deleted = True else: profil_role_exist.deleted = False profil_role_exist.save() else: profil_role_create = UserRole() profil_role_create.role_id = role_form profil_role_create.user_id = user if attrib in form_edit: profil_role_create.edit = True else: profil_role_create.edit = False if attrib in form_delete: profil_role_create.deleted = True else: profil_role_create.deleted = False profil_role_create.save() flash('Enregistement effectue avec succes', 'success') return redirect(url_for('user_param.permission', user_id=user_id)) return render_template('user/permission.html', **locals())
def login(token, userinfo, **params): time_zones = pytz.timezone('Africa/Douala') date_auto_nows = datetime.datetime.now(time_zones).strftime("%Y-%m-%d %H:%M:%S") param = params.get('extra') if param: if userinfo['hd'] and (userinfo['hd'] == 'accentcom-cm.com' or userinfo['hd'] == 'accentcom.agency'): if param == 'superadmin': admin_role = Roles.objects(valeur='super_admin') if admin_role: flash('il existe deja un super administrateur', 'warning') return redirect(url_for('home.index')) else: Role = Roles() Role.valeur = 'super_admin' role_id = Role.save() User = Users() User.first_name = userinfo['family_name'] User.last_name = userinfo['given_name'] User.email = userinfo['email'] User.google_id = userinfo['id'] User.is_enabled = True User.date_create = function.datetime_convert(date_auto_nows) User.date_update = function.datetime_convert(date_auto_nows) user_id = User.save() User_Role = UserRole() User_Role.role_id = role_id User_Role.user_id = user_id User_Role.save() flash('Creation du compte admin avec success. Vous pouvez vous connecter', 'success') return redirect(url_for('home.index')) elif param == 'utilisateur': User_exist = Users.objects(google_id=userinfo['id']).first() if User_exist: if User_exist.is_enabled: session['user_id'] = str(User_exist.id) User_exist.logged = True User_exist.date_last_logged = function.datetime_convert(date_auto_nows) User_exist.date_update = function.datetime_convert(date_auto_nows) User_exist.save() return redirect(url_for('tache.me')) else: flash("Votre Compte est en attente d'activation de vos parametres. Contactez l'administrateur", 'warning') return redirect(url_for('home.index')) else: User = Users() User.first_name = userinfo['family_name'] User.last_name = userinfo['given_name'] User.email = userinfo['email'] User.google_id = userinfo['id'] User.date_create = function.datetime_convert(date_auto_nows) User.date_update = function.datetime_convert(date_auto_nows) user_id = User.save() flash(""+userinfo['name']+" Votre Compte est en attente d'activation de vos parametres. Contactez l'administrateur", 'warning') return redirect(url_for('home.index')) else: flash('Connectez vous avec une adresse mail du Domaine "accentcom-cm.com"', 'danger') return redirect(url_for('home.index')) else: flash('Vous ne pouvez pas acceder dans cette url', 'danger') return redirect(url_for('home.index'))