Skip to content

Commit ebaf908

Browse files
committed
Login Module
1 parent 4e022a2 commit ebaf908

17 files changed

+467
-71
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
1111
android:theme="@style/AppTheme">
12-
<activity android:name=".LoginActivity"></activity>
12+
<activity android:name=".login.LoginActivity"></activity>
1313
<activity android:name=".VaultActivity" android:exported="false"/>
1414
<activity android:name=".ImageViewerActivity" android:exported="false"/>
15+
<activity android:name=".login.SetPasswordActivity" android:exported="false"/>
1516
<activity android:name=".EntryActivity">
1617
<intent-filter>
1718
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/katcom/androidFileVault/DataBase/DBHelper.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,28 @@
55
import android.database.sqlite.SQLiteOpenHelper;
66

77
import androidx.annotation.Nullable;
8-
8+
import com.katcom.androidFileVault.DataBase.VaultDbSchema.VaultTable;
99
public class DBHelper extends SQLiteOpenHelper {
1010
private static final int VERSION =1;
1111
private static final String DATABASE_NAME = "fileBase.db";
12+
private static final String SQL_CREATE_VAULT_TABLE=
13+
"CREATE TABLE " + VaultTable.TABLE_NAME + " (" +
14+
VaultTable.COLUMN_VAULT_NAME + " Text not null PRIMARY KEY," +
15+
VaultTable.PASSWORD + " Text not null )";
16+
17+
1218
public DBHelper(@Nullable Context context) {
1319
super(context,DATABASE_NAME,null,VERSION);
14-
1520
}
1621

1722
@Override
1823
public void onCreate(SQLiteDatabase db) {
19-
24+
db.execSQL(SQL_CREATE_VAULT_TABLE);
2025
}
2126

2227
@Override
2328
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
2429

2530
}
31+
2632
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.katcom.androidFileVault.DataBase;
22

33
public class VaultDbSchema {
4-
public static final class FileTable{
5-
public static final String NAME = "files";
4+
public static final class VaultTable{
5+
public static final String TABLE_NAME = "User";
6+
public static final String COLUMN_VAULT_NAME = "vault_name";
7+
public static final String PASSWORD = "password";
8+
69
}
710
}

app/src/main/java/com/katcom/androidFileVault/EntryFragment.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
package com.katcom.androidFileVault;
22

33
import android.content.Intent;
4+
import android.content.SharedPreferences;
5+
import android.content.SharedPreferences.Editor;
46
import android.os.Bundle;
57
import androidx.fragment.app.Fragment;
68
import android.view.LayoutInflater;
79
import android.view.View;
810
import android.view.ViewGroup;
911
import android.widget.Button;
1012

13+
import com.katcom.androidFileVault.SecureSharePreference.SecureSharePreference;
14+
import com.katcom.androidFileVault.login.Login;
15+
import com.katcom.androidFileVault.login.LoginActivity;
16+
import com.katcom.androidFileVault.login.SetPasswordActivity;
17+
1118
public class EntryFragment extends Fragment {
1219
private Button mVaultOpenButton;
1320

@@ -28,7 +35,21 @@ public void onClick(View v) {
2835
}
2936

3037
private void openVault() {
31-
Intent i= new Intent(this.getContext(),LoginActivity.class);
32-
startActivity(i);
38+
if(!hasPassword()){
39+
setPassword();
40+
}else{
41+
Intent i= new Intent(this.getContext(), LoginActivity.class);
42+
startActivity(i);
43+
}
44+
}
45+
46+
private void setPassword() {
47+
Intent intent = new Intent(this.getContext(), SetPasswordActivity.class);
48+
startActivity(intent);
49+
}
50+
51+
private boolean hasPassword(){
52+
SecureSharePreference secretShare = SecureSharePreference.getInstance(getContext(), Login.LOGIN_INFO_PREF_FILE);
53+
return secretShare.contains(Login.TAG_PASSWORD);
3354
}
3455
}

app/src/main/java/com/katcom/androidFileVault/LoginActivity.java

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.katcom.androidFileVault.SecureSharePreference;
2+
3+
import android.content.Context;
4+
import android.content.SharedPreferences;
5+
6+
import androidx.annotation.Nullable;
7+
8+
import java.util.Map;
9+
import java.util.Set;
10+
11+
public class SecureSharePreference implements SharedPreferences {
12+
private static SharedPreferences share;
13+
private static SecureSharePreference secretShare;
14+
private SecureSharePreference(Context context,String name){
15+
share = context.getSharedPreferences(name, Context.MODE_PRIVATE);
16+
}
17+
18+
public static SecureSharePreference getInstance(Context context,String name){
19+
if(secretShare == null){
20+
secretShare = new SecureSharePreference(context,name);
21+
return secretShare;
22+
}
23+
24+
return secretShare;
25+
}
26+
27+
@Override
28+
public Map<String, ?> getAll() {
29+
return share.getAll();
30+
}
31+
32+
@Nullable
33+
@Override
34+
public String getString(String key, @Nullable String defValue) {
35+
return share.getString(key,defValue);
36+
}
37+
38+
@Nullable
39+
@Override
40+
public Set<String> getStringSet(String key, @Nullable Set<String> defValues) {
41+
return share.getStringSet(key,defValues);
42+
}
43+
44+
@Override
45+
public int getInt(String key, int defValue) {
46+
return share.getInt(key,defValue);
47+
}
48+
49+
@Override
50+
public long getLong(String key, long defValue) {
51+
return share.getLong(key,defValue);
52+
}
53+
54+
@Override
55+
public float getFloat(String key, float defValue) {
56+
return share.getFloat(key,defValue);
57+
}
58+
59+
@Override
60+
public boolean getBoolean(String key, boolean defValue) {
61+
return share.getBoolean(key,defValue);
62+
}
63+
64+
@Override
65+
public boolean contains(String key) {
66+
return share.contains(key);
67+
}
68+
69+
@Override
70+
public Editor edit() {
71+
return share.edit();
72+
}
73+
74+
@Override
75+
public void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) {
76+
share.registerOnSharedPreferenceChangeListener(listener);
77+
}
78+
79+
@Override
80+
public void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) {
81+
share.unregisterOnSharedPreferenceChangeListener(listener);
82+
}
83+
84+
85+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.katcom.androidFileVault.login;
2+
3+
public interface Login {
4+
String LOGIN_INFO_PREF_FILE = "LOGIN_INFO";
5+
String TAG_PASSWORD = "Password Hash";
6+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.katcom.androidFileVault.login;
2+
3+
import androidx.fragment.app.Fragment;
4+
5+
import com.katcom.androidFileVault.SingleFragmentActivity;
6+
7+
public class LoginActivity extends SingleFragmentActivity {
8+
@Override
9+
protected Fragment createFragment() {
10+
return new LoginFragment();
11+
}
12+
13+
}

app/src/main/java/com/katcom/androidFileVault/LoginFragment.java renamed to app/src/main/java/com/katcom/androidFileVault/login/LoginFragment.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.katcom.androidFileVault;
1+
package com.katcom.androidFileVault.login;
22

33
import android.app.AlertDialog;
44
import android.content.DialogInterface;
@@ -14,15 +14,20 @@
1414
import android.widget.EditText;
1515
import android.widget.Toast;
1616

17+
import com.katcom.androidFileVault.R;
18+
import com.katcom.androidFileVault.SecureSharePreference.SecureSharePreference;
19+
import com.katcom.androidFileVault.VaultActivity;
20+
1721
import java.security.MessageDigest;
1822
import java.security.NoSuchAlgorithmException;
1923
import java.util.Arrays;
2024

21-
public class LoginFragment extends Fragment {
25+
import static com.katcom.androidFileVault.utils.PasswordHelper.getSHA256MessageDigest;
26+
27+
public class LoginFragment extends Fragment implements Login {
2228
private EditText mPasswordInput;
2329
private Button mLoginButton;
2430
private static final String TAG="LoginFragment";
25-
private static final String SHA_256_TAG = "SHA-256";
2631
@Override
2732
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
2833
View view = inflater.inflate(R.layout.fragment_login,container,false);
@@ -40,22 +45,21 @@ public void onClick(View v) {
4045
return view;
4146
}
4247
private void login() {
48+
4349
String password = mPasswordInput.getText().toString();
4450
String digestPassword = getPasswordHash(password);
4551
Log.v(TAG,"digest pwd : " + digestPassword);
4652

47-
boolean isPasswordCorrect = checkPassword(digestPassword);
48-
49-
if(isPasswordCorrect) {
53+
if(isPasswordCorrect(digestPassword)) {
5054
Intent i = new Intent(this.getContext(), VaultActivity.class);
5155
startActivity(i);
5256
}else{
5357
showLoginFailureDialog();
54-
5558
}
5659

5760
}
5861

62+
5963
private void showLoginFailureDialog() {
6064
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
6165
dialogBuilder.setMessage("The password you entered is incorrect! Please try again")
@@ -70,27 +74,16 @@ public void onClick(DialogInterface dialog, int which) {
7074
dialogBuilder.create().show();
7175
}
7276

73-
private boolean checkPassword(String digestPassword) {
74-
return digestPassword.equals(getPasswordHash("abc"));
77+
private boolean isPasswordCorrect(String digestPassword) {
78+
SecureSharePreference secretShare = SecureSharePreference.getInstance(getContext(),Login.LOGIN_INFO_PREF_FILE);
79+
String passwordRecord = secretShare.getString(Login.TAG_PASSWORD,null);
80+
81+
return digestPassword.equals(passwordRecord);
7582
}
7683

7784
private String getPasswordHash(String password){
7885
return getSHA256MessageDigest(password);
7986
}
8087

81-
private String getSHA256MessageDigest(String str) {
82-
String digestText = "";
83-
try{
84-
85-
MessageDigest md = MessageDigest.getInstance(SHA_256_TAG);
86-
md.update(str.getBytes());
87-
byte[] tempDigestArray = md.digest();
88-
digestText = Arrays.toString(tempDigestArray);
89-
90-
}catch (NoSuchAlgorithmException e){
91-
Log.e(TAG,"No algorithm found with tag : "+ SHA_256_TAG,e);
92-
}
93-
return digestText;
94-
}
9588

9689
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.katcom.androidFileVault.login;
2+
3+
import androidx.fragment.app.Fragment;
4+
5+
import com.katcom.androidFileVault.SingleFragmentActivity;
6+
7+
public class SetPasswordActivity extends SingleFragmentActivity {
8+
@Override
9+
protected Fragment createFragment() {
10+
return new SetPasswordFragment();
11+
}
12+
}

0 commit comments

Comments
 (0)