Ir ao conteúdo
  • Cadastre-se

Sistema de login em Ruby


Posts recomendados

Sou iniciante em Ruby e estou desenvolvendo um sistema de login, em sua primeira "versão", porque eu pretendo expandi-lo e altera-lo. Um problema é que ele necessita de um arquivo para cada usuário.

 

Para executar este programa:

cd PASTA
ruby CODIGO

 

puts "Name:"
name = gets.chomp
puts "Password:"
password = gets.chomp #pergunta o nome a senha

path = name + ".txt" #soma o nome do usuário a .txt, para obter o nome do arquivo
check = File.file?(path) #confere se o arquivo correspondente ao usuário

if check == true then #se o arquivo existe, abre ele em modo de leitura e o lê
	open = File.open(path, "r")
	read = open.read()

	if read == password then #se o conteúdo do arquivo for igual à senha digitada, diz que está logado
		puts "Logged in."
	end

	if read != password then #se o conteúdo do arquivo for igual à senha digitada, diz que está errada
		puts "Wrong password."
		sleep(2) #aguarda dois segundos
		system("cls") #limpa o console
		system("ruby source.rb") #reinicia o programa
	end
end

if check == false then #se o arquivo não existir, diz que o usuário não foi encontrado
	puts "User not found."
	sleep(2) #aguarda dois segundos
	system("cls") #limpa o console
	system("ruby source.rb") #reinicia o programa
end

 

O arquivo deve levar o nome do usuário e a extensão .txt, e ter como conteúdo a senha.

Link para o comentário
Compartilhar em outros sites

Aqui está o sistema de login, refeito:

 

def clear
	sleep(1)
	system("cls")
end

puts "Username:"
username = gets.chomp
puts "Password:"
password = gets.chomp

check = File.read("list.txt").include?("\n" + username + "\s" + password + "-")

if check == false then
	puts "\nUsername or password wrong."
	clear
	system("ruby login.rb")
end

if check == true then
	puts "\nLogged in."
end

 

As credenciais devem seguir esse padrão:

"\n" + username + "\s" + password + "-"

Ou seja, quebra de linha, usuário, senha e um hífen.

adicionado 30 minutos depois

Aqui está o sistema de registro compatível.

 

system("cls")
puts "You can only use numbers and letters.\nType the wished username:"
username = gets.chomp
username.delete("^a-zA-Z0-9")

puts "\nNow, the password:"
password  = gets.chomp
password.delete("^a-zA-Z0-9")

check = File.read("list.txt").include?("\n" + username + "\s")

if check == true then
	puts "\nUsername already in use."
	sleep(2)
	system("cls")
	system("ruby register.rb")
end

if check == false then
	puts "\n\nUsername: " + username + "\nPassword: " + password
	puts "\nConfirm (yes/no)?"
	confirm = gets.chomp

	if confirm == "yes" then
		open = File.open("list.txt", "a+")
		write = open.write("\n" + username + "\s" + password + "-")
		puts "\nSuccessfully registered."
	end

	if confirm == "no" then
		sleep(1)
		system("cls")
		system("ruby register.rb")
	end
end

 

Link para o comentário
Compartilhar em outros sites

Eu decidi fundir a autenticação e o registro em um programa só. Ficando assim:

def login
	sleep(2)
	system("cls")
	
	puts "Username:"
	user_l = gets.chomp
	puts "\nPassword:"
	pass_l = gets.chomp

	check = File.read("list.txt").include?("\n" + user_l + "\s" + pass_l + "-")

	if check == false then
		puts "\nWrong username or password."
		login
	end

	if check == true then
		puts "\nLogged in."
	end
end

def register
	sleep(2)
	system("cls")
	
	puts "You can only use numbers and letters.\nType the wished username:"
	user_r = gets.chomp
	user_r.delete("^a-zA-Z0-9")
	puts "\nNow, the password:"
	pass_r = gets.chomp
	pass_r.delete("^a-zA-Z0-9")
	check = File.read("list.txt").include?("\n" + user_r + "\s")

	if check == true then
		puts "\nUsername already in use."
		sleep(2)
		system("cls")
		system("ruby register.rb")
	end

	if check == false then
		puts "\n\nUsername: " + user_r + "\nPassword: " + pass_r
		puts "\nConfirm (yes/no)?"
		confirm = gets.chomp
	end
	
	
	if confirm == "yes" then
		open = File.open("list.txt", "a+")
		write = open.write("\n" + user_r + "\s" + pass_r+ "-")
		puts "\nSuccessfully registered."
	end

	if confirm == "no" then
		sleep(2)
		system("cls")
		system("ruby register.rb")
	end
end

sleep(1)
system("cls")
print "Would you like to login or register?\n"
would = gets.chomp

if would == "login" then
	login
end

if would == "register" then
	register
end

 

Espero não ter sido chato, por postar várias vezes o mesmo sistema refeito, mas assim vocês acompanhar a evolução dele.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...