def login(cls, request, dbsession, username, password):

        user = User.get_user_by_username(dbsession, username)

        if user:
            if request.authenticated_userid is not None and username != request.authenticated_userid:
                return make_response(
                    'Sei giá loggato con un\'altra utenza. Effettua il logout prima di autenticarti '
                    'nuovamente.'.format(request.authenticated_userid), 409)
            elif request.authenticated_userid is not None and username == request.authenticated_userid:
                return make_response('Sei giá loggato.', 409)

            if check_password(password, user.password):
                logger.debug('CHECK PASSWORD completata!')

                headers = remember(request, user.id)
                request.response.headers = headers

                logger.debug(
                    'Salvataggio informazioni dell\'utente dentro la sessione.'
                )
                return make_response('Success!', 200)
            else:
                return make_response('Password errata! Riprova.', 406)
        else:
            return make_response(
                'Questo utente non esiste! Riprova o registrati e poi loggati.',
                406)
Example #2
0
    def upload(request, file, md5):
        folder = request.registry.settings['localpath']

        try:
            filename = file.filename
            calc_md5 = calculate_md5(filename)
            file_stream = file.file

            if calc_md5 == md5:
                # la query ritorna una lista di tuple: quindi devo cercare la tupla
                if (filename, ) not in Manual.get_all_title(request.dbsession):
                    path = os.path.join(folder, filename)

                    create_manuals_folder(folder)

                    server_file = open(path, 'wb')

                    while True:
                        data = file_stream.read(2 << 16)
                        if not data:
                            break
                        server_file.write(data)
                    server_file.close()
                    new_manual = Manual({
                        'title': filename,
                        'path': path,
                        'upload_dt': datetime.now(),
                        'fk_user': request.authenticated_userid
                    })
                    try:
                        Manual.insert_new_manual(request.dbsession, new_manual)
                    except WrongInput, e:
                        logger.error(
                            'UPLOAD CONTROLLER: db manual insert failed. \n{}'.
                            format(e))
                        rollback_upload(path)
                        return make_response(
                            'Stiamo avendo dei disservizi interni. Ci scusiamo per il disagio!',
                            500)
                    logger.info('Caricamento completato!')
                    return make_response(
                        'Upload del file {} completato con successo'.format(
                            filename), 200)
                else:
                    logger.error(
                        'UPLOAD FILE: esiste giá un file con questo nome!')
                    return make_response(
                        'Esiste giá un file con questo nome: perfavore cambialo!',
                        409)
            else:
class AuthenticationController:
    def __init__(self):
        pass

    @classmethod
    def registration(cls, dbsession, nome, cognome, password, username):
        new_user = User({
            'nome': nome,
            'cognome': cognome,
            'password': hash_password(password),
            'url_img': None,
            'iscrizione_dt': datetime.datetime.now(),
            'username': username,
            'fk_role_id': 1
        })
        try:
            username_list = User.get_all_username(dbsession)
            for usr in username_list:
                print usr[0]
                if username == usr[0]:
                    logger.error('Username giá usato! Cambialo.')
                    return make_response('Username giá usato! Cambialo.', 409)
            User.insert_new_user(dbsession, new_user)
            return make_response('Registrazione completata!', 200)
        except WrongInput, e:
            logger.error(e)
            return make_response('I dati sono sbagliati! Controllali.', 406)
        except DuplicateValue, e:
            logger.error(e)
            return make_response(
                'Questo username é giá usato! Provane un\'altro.', 409)
Example #4
0
    def login(self):
        request = self.request

        username = request.params.get('username', None)
        password = request.params.get('password', None)

        # logger.info('LOGIN: i parametri di INPUT sono {username}, {password}'.format(username=username,
        logger.info('LOGIN: i parametri di INPUT sono {username}'.format(username=username))

        if username is not None and username != '':
            if password is not None and password != '':

                result = AuthenticationController.login(request, request.dbsession, username, password)

                if result['code'] == self.success_request:
                    logger.info('LOGIN COMPLETATA! Reindirizzamento alla home.')
                    return make_response('Success', 302, url=request.route_url('dashboard'))
                elif result['code'] == self.not_acceptable_request:
                    logger.error('LOGIN FALLITA: {}'.format(result['message']))
                    return HTTPNotAcceptable(body=result['message'])
                elif result['code'] == self.conflict_request:
                    logger.error('LOGIN FALLITA: {}'.format(result['message']))
                    return HTTPConflict(body=result['message'])
                else:
                    logger.error(result)
                    return HTTPInternalServerError(body='Errore inaspettato. Ci scusiamo per il disagio!')
            else:
                logger.error('LOGIN FALLITA perché manca il parametro PASSWORD')
                return HTTPNotAcceptable(body='Manca la PASSWORD! Controlla.')
        else:
            logger.error('LOGIN FALLITA perché manca il parametro USERNAME')
            return HTTPNotAcceptable(body='Manca USERNAME! Controlla.')
Example #5
0
    def logout(self):
        request = self.request

        headers = forget(request)
        next_url = request.route_url('login')

        logger.info('LOGOUT: url = {}, headers = {}'.format(next_url, headers))

        request.response.headers = headers
        return make_response('Logout successful!', 302, next_url)
Example #6
0
                        rollback_upload(path)
                        return make_response(
                            'Stiamo avendo dei disservizi interni. Ci scusiamo per il disagio!',
                            500)
                    logger.info('Caricamento completato!')
                    return make_response(
                        'Upload del file {} completato con successo'.format(
                            filename), 200)
                else:
                    logger.error(
                        'UPLOAD FILE: esiste giá un file con questo nome!')
                    return make_response(
                        'Esiste giá un file con questo nome: perfavore cambialo!',
                        409)
            else:
                logger.error(
                    'UPLOAD CONTROLLER: md5 differenti. Ricevuto: {}, calcolato: {}'
                    .format(md5, calc_md5))
                return make_response(
                    'Spiacenti ma il file risulta essere corrotto.', 406)
        except OSError, e:
            logger.error('UPLOAD OSError: {}'.format(e))
            return make_response(
                'Siamo spiacenti ma stiamo riscontrando un momentaneo disservizio interno',
                500)
        except MemoryError, e:
            logger.critical('UPLOAD MemoryError: {}'.format(e))
            return make_response(
                'Siamo spiacenti ma al momento non abbiamo abbastanza spazio per salvare questo file.',
                507)