Sobre este proyecto
it-programming / web-development
Abierto
Contexto general del proyecto
Login. Permite loggear con email+contraseña, google, facebook. a.(Login0.jpg): Root, permite loggear, crear cuenta email+contraseña, loggear con google o facebook. Recuperar contraseña. Busca datos almacenados localmente para loggear directamente. Endpoint: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/user_login_account.php Tipos de loggeo: ['email','google','facebook'] 1-si hay datos almacenados localmente de email y contraseña(encriptada) y tipo de loggeo ['email'] usa endpoint. 2-Endpoint puede responder con ['INVALID','Account_waiting_for_email_check','valid'] invalid: los datos almacenados son incorrectos. Se eliminar esos datos almacenados. ACCOUNT_WAITING_FOR_EMAIL_CHECK: La cuenta exite pero no está verificada. Va a login3.jpg. VALID: Se verifica si el objeto usuario tiene una veterinaria asociada. Si la tiene va a inicio app Si no la tiene, va a login4.jpg 3-Si no hay datos almacenados localmente la actividad/pantalla permite Crear cuenta va a creación de cuentas email+contraseña (login1.jpg). Recuperar contraseña va a login2.jpg. 4-Si el loggeo se realiza vía google/facebook, luego de recibir autorización de los correspondientes endpoints se debe llamar a: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/user_facebook_google_login.php Este endpoint nos devolverá el usuario. Si tiene veterinaria asociada va a inicio de app, sino va a login4. b.(Login1.jpg): Crear cuenta: nombre, email, contraseña y repetición de contraseña. Se valida email y contraseña. Endpoint: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/user_create_account.php 1-Habiendo validado va a login3.jpg. Se almacenan datos de acceso email y contraseña encriptada y tipo EMAIL. c.(Login3.jpg): En espera verificación cuenta vía click en link email (solo para loggeo email+contraseña). Endpoint: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/user_check_account.php Permite usar otra cuenta ya que cada acceso futuro a la app quedará en este punto. 1-Si se verifica va a login4.jpg. d.(Login4.jpg): 1-Opción de unirse a veterinaria va a login5.jpg. 2-Verificar solicitudes enviadas. http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/usuarios_peticiones.php 3-Crear veterinaria va a login6.jpg. e.(Login5.jpg): Unirse a una veterinaria. Muestra la lista de veterinarias. Se marcan aquellas a las que ya se les ha enviado una solicitud de unión. Permite buscar veterinarias por email, nombre. Puede seleccionarse una veterinaria para enviarse solicitud o cancelar solicitud previamente enviada. Endpoint: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/veterinarias.php 1-Enviar solicitud: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/usuarios_peticiones.php 2-Cancelar solicitud: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/usuarios_peticiones.php 3-Ver una veterinaria va a login6.jpg f.( Login6.jpg): Ver los datos de la veterinaria: Endpoint: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/veterinarias.php g.(Login7.jpg): Creación de veterinaria, se valida nombre, región e email. Regiones se muestra en lista con opción de búsqueda. Se puede incluir foto desde cámara o archivo. Se redimensiona y comprime imagen en hardware cliente antes de subir, formato jpg. Endpoints: http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/veterinarias.php http://194.113.73.110/doctorvet/backend/php/test/api/appvet/v1/regiones.php Anexo En cada ejecución de la app, se verifica si esta el guardado de forma local un email. Si no existe, tenemos una primera ejecución en este dispositivo y creación de guid. Código en java: public static String Generateguid() { //uuid = universal unique | guid = global unique uuid uuid = uuid.randomUUID(); return uuid.toString(); } guid que será enviado al endpoint para la creación del usuario. Se guarda en dispositivo el email de usuario, el tipo de loggeo ['email', 'google', 'facebook'] y la contraseña encriptada public class aescrypt { private static final string algorithm = "aes"; private static final string key = "vda96sbbib2l7yfi"; public static string encrypt(string value) throws exception { key key = generatekey(); cipher cipher = cipher.getInstance(AESCrypt.ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, key); byte [] encryptedByteValue = cipher.doFinal(value.getBytes("utf-8")); String encryptedValue64 = Base64.encodeToString(encryptedByteValue, Base64.DEFAULT); return encryptedValue64; } public static String decrypt(String value) throws Exception { Key key = generateKey(); Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedValue64 = Base64.decode(value, Base64.DEFAULT); byte [] decryptedByteValue = cipher.doFinal(decryptedValue64); String decryptedValue = new String(decryptedByteValue,"utf-8"); return decryptedValue; } private static Key generateKey() throws Exception { Key key = new SecretKeySpec(AESCrypt.KEY.getBytes(), AESCrypt.ALGORITHM); return key; } }
Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Cambio mediano
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Integraciones de API Otros (Otras APIs)
Roles necesarios Programador
Plazo de Entrega: No definido
Habilidades necesarias