diff --git a/db/database.db b/db/database.db
index ef9e61a81ab022667b3de14a2853a19442bd0565..af371cd4f8279233c3047cf40934b337b4147fe3 100644
Binary files a/db/database.db and b/db/database.db differ
diff --git a/index.js b/index.js
index 5ef99e511b3783be7032ec83f62748b82e1329a5..9760286b790886f5fd3a4ff0746799ba43f46afd 100644
--- a/index.js
+++ b/index.js
@@ -25,6 +25,8 @@ import authSignup from './src/routes/auth/authSignup.js';
 import authLogin from './src/routes/auth/authLogin.js';
 import authMiddleware from './src/routes/auth/authMiddleware.js';
 import authDisconnect from './src/routes/auth/authDisconnect.js';
+import authRefresh from './src/routes/auth/authRefresh.js';
+
 async function createDb() {
     if(fs.existsSync('./db/database.db') == false){
         const db = await open({
@@ -66,6 +68,7 @@ api.use(express.json());
 api.use('/auth/signup',authSignup);
 api.use('/auth/login',authLogin);
 api.use('/auth/disconnect', authDisconnect);
+api.use('/auth/refresh', authRefresh);
 
 api.use('/hello',authMiddleware,helloRoute);
 api.use('/monkey/deleteAll',monkeyDeletteAll);
diff --git a/migrations/001-db.sql b/migrations/001-db.sql
index 2424d4e9ec1f320021adf9a8b8e450930df39d95..ea7a174c946d5810adc4718c6537db4ab7f0cddb 100644
--- a/migrations/001-db.sql
+++ b/migrations/001-db.sql
@@ -31,6 +31,15 @@ CREATE TABLE invalid_token (
     token TEXT
 );
 
+CREATE TABLE refresh_tokens (
+    id INTEGER PRIMARY KEY AUTOINCREMENT,
+    user_id INTEGER,
+    token TEXT NOT NULL,
+    expiry_date TIMESTAMP NOT NULL,
+    FOREIGN KEY(user_id) REFERENCES users(id)
+);
+
+
 -- Insertion des données dans la table 'user'
 INSERT INTO user (id, username, password) VALUES
 (1, 'admin', 'admin');
diff --git a/src/DAO/MonkeyDbDAO.js b/src/DAO/MonkeyDbDAO.js
index 9b5d1e7982fd55fc1eeb08ba62f5dcc32faac3cc..a0f2d2283d4154c504aff5ec1775522a11a193b3 100644
--- a/src/DAO/MonkeyDbDAO.js
+++ b/src/DAO/MonkeyDbDAO.js
@@ -21,6 +21,25 @@ class MonkeyDbDAO extends IMonkeyDAO{
             filename: './db/database.db',
             driver: sqlite3.Database
         });
+        const dataMonkey = await this.db.get('SELECT * FROM monkey WHERE id = ?', [monkey.id]);
+        if(monkey.name == null){
+            monkey.name = dataMonkey.name;
+        }
+        if(monkey.speciesId == null){
+            monkey.speciesId = dataMonkey.speciesId;
+        }
+        if(monkey.sex == null){
+            monkey.sex = dataMonkey.sex
+        }
+        if(monkey.age == null){
+            monkey.age = dataMonkey.age;
+        }
+        if(monkey.birthLoc == null){
+            monkey.birthLoc = dataMonkey.birthLoc;
+        }
+        if(monkey.liveLoc == null){
+            monkey.liveLoc = dataMonkey.liveLoc;
+        }
         await this.db.run('UPDATE monkey SET name = ?, speciesId = ?, sex=?, age = ?, birthLoc = ?, liveLoc = ? WHERE id = ?',[monkey.name, monkey.speciesId, monkey.sex, monkey.age, monkey.birthLoc, monkey.liveLoc, monkey.id]);
     }
     async delete(id){
diff --git a/src/DAO/SpeciesDbDAO.js b/src/DAO/SpeciesDbDAO.js
index 83db1c0d6ed4421e59336835f99d894fb1678834..4bc589085f86fc47234a7874f609e15a4a9a6b68 100644
--- a/src/DAO/SpeciesDbDAO.js
+++ b/src/DAO/SpeciesDbDAO.js
@@ -19,6 +19,22 @@ class SpeciesDbDAO extends ISpeciesDAO{
             filename: './db/database.db',
             driver: sqlite3.Database
         });
+        const dataSpecies = await this.db.get('SELECT * FROM species WHERE id = ?', [species.id]);
+        if(species.name == null){
+            species.name = dataSpecies.name;
+        }
+        if(species.habitat == null){
+            species.habitat = dataSpecies.habitat;
+        }
+        if(species.height == null){
+            species.height = dataSpecies.height;
+        }
+        if(species.weight == null){
+            species.weight = dataSpecies.weight;
+        }
+        if(species.diet == null){
+            species.diet = dataSpecies.diet;
+        }
         await this.db.run('UPDATE species SET name = ?, habitat = ?, height = ?, weight = ?, diet = ? WHERE id = ?', [species.name, species.habitat, species.height, species.weight, species.diet, species.id]);
     }
 
diff --git a/src/routes/auth/authLogin.js b/src/routes/auth/authLogin.js
index df8cc48b1bc3d991a9856e0578ad892c79392367..4c0437bb911266d0e47d007592c546eb137bf701 100644
--- a/src/routes/auth/authLogin.js
+++ b/src/routes/auth/authLogin.js
@@ -29,19 +29,20 @@ router.post('/', async (req, res) => {
             }
         };
 
-        jwt.sign(
-            payload,
-            process.env.JWT_SECRET,
-            { expiresIn: 3600 },
-            (err, token) => {
-                if (err) throw err;
-                res.json({ token });
-            }
-        );
+        const accessToken = jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '15m' });
+        const refreshToken = jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '7d' });
+
+        // Stockez le refresh token dans la base de données
+        //db.prepare('INSERT INTO refresh_tokens (user_id, token, expiry_date) VALUES (?, ?, datetime("now", "+7 day"))').run(user.id, refreshToken);
+
+
+        res.json({ accessToken, refreshToken });
     } catch (err) {
         console.error(err.message);
         res.status(500).send('Erreur du serveur');
     }
 });
 
+
+
 export default router;
diff --git a/src/routes/auth/authRefresh.js b/src/routes/auth/authRefresh.js
new file mode 100644
index 0000000000000000000000000000000000000000..3154343984206a506b98f77616f5422c91bad8cf
--- /dev/null
+++ b/src/routes/auth/authRefresh.js
@@ -0,0 +1,24 @@
+import express from 'express';
+import bcrypt, { compare } from 'bcrypt';
+import jwt from 'jsonwebtoken';
+import sqlite from 'better-sqlite3';
+import dotenv from 'dotenv';
+dotenv.config();
+
+const router = express.Router();
+
+router.post('/refresh', (req, res) => {
+    const refreshToken = req.body.token;
+
+    // Vérifiez si le refresh token est valide
+
+    jwt.verify(refreshToken, process.env.JWT_SECRET, (err, user) => {
+        if (err) return res.sendStatus(403);
+
+        const accessToken = jwt.sign({ id: user.id }, process.env.JWT_SECRET, { expiresIn: '15m' });
+
+        res.json({ accessToken });
+    });
+});
+
+export default router;
\ No newline at end of file