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)
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)
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.')
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)
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)